PyQt4 + QT designer实现多窗口调用及其程序原理

1 多窗口调用实现的功能

为了统一窗口,采用MainWindow作为窗口的类型,即上图所示5个窗口均为MainWindow

2 使用QT designer搭建用到的界面

首先第一步利用PyQt4中自带的QT designer搭建各个窗口,并使用PYUIC生成各个窗口的python文件(.py),各个窗口的搭建界面如下图所示:

3 编写主调用函数

在使用QT designer搭建完五个界面并生成完五个.py文件后,编写一个主界面函数来实现上述的调用关系。其中,自动生成的文件中有两处需要修改,1是将每个文件中class括号里的继承类由Object改为QMainWindow,2是将每个文件的class类名修改成不一样的,在这里修改成了main_MainWindow,subone_MainWindow ,subtwo_MainWindow,table_MainWindow,train_MainWindow。

from PyQt4 import QtCore, QtGui
import sys
# 以下五个文件为pyuic生成的.py文件,注意修改里面类的名字不要重复
from sub_window_one import subone_MainWindow  
from sub_window_two import subtwo_MainWindow
from main_window import main_MainWindow
from table_window import table_MainWindow
from train_window import train_MainWindow

class Mywindow1(QtGui.QMainWindow):
    def __init__(self):
        super(Mywindow1, self).__init__()
        self.ui = subone_MainWindow()  # 这句话是实例化类
        self.ui.setupUi(self)  # 这句话相当于设置控件

    def open(self):  # 被调用的类需要再编写一个open函数
        self.show()

class Mywindow2(QtGui.QMainWindow):
    def __init__(self):
        super(Mywindow2, self).__init__()
        self.ui = subtwo_MainWindow()
        self.ui.setupUi(self)

    def open(self): # 被调用的类需要再编写一个open函数
        self.show()

class Mywindow3(QtGui.QMainWindow):
    def __init__(self):
        super(Mywindow3, self).__init__()
        self.ui = main_MainWindow()
        self.ui.setupUi(self)

class Mywindow4(QtGui.QMainWindow):
    def __init__(self):
        super(Mywindow4, self).__init__()
        self.ui = table_MainWindow()
        self.ui.setupUi(self)

    def open(self):  # 被调用的类需要再编写一个open函数
        self.show()

class Mywindow5(QtGui.QMainWindow):
    def __init__(self):
        super(Mywindow5, self).__init__()
        self.ui = train_MainWindow()
        self.ui.setupUi(self)

    def open(self):  # 被调用的类需要再编写一个open函数
        self.show()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    # 实例化各个类
    w1 = Mywindow1()
    w2 = Mywindow2()
    w3 = Mywindow3()
    w4 = Mywindow4()
    w5 = Mywindow5()
	# 将主窗口进行展示调用
    w3.show()
    # 主窗口与子窗口1,2使用connect方法连接起来
    w3.ui.pushButton.clicked.connect(w2.open)
    w3.ui.pushButton_2.clicked.connect(w1.open)
    # 子窗口1与子窗口1-1使用connect方法连接起来
    w1.ui.pushButton_4.clicked.connect(w4.open) 
    # 子窗口2与子窗口2-1使用connect方法连接起来 
    w2.ui.pushButton_4.clicked.connect(w5.open) 
    
    sys.exit(app.exec_())

由于篇幅限制,另外5个自动生成的文件就不在此进行展示了,需要完整模板的读者可以去我的资源进行整套的下载,环境为python3.7 + PyQt4, 无运行bug。

4 一句话看懂窗口调用原理

使用QT designer生成的文件,需要先实例化其类,再调用setupUi(self)方法,再调用.show()方法即可将窗口调用出来,即三行指令实现QT designer自动生成文件的窗口调用,因次可以灵活配置其调用关系。

  • 8
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyQt5的QT Designer是一个可视化工具,它可以帮助你设计和创建PyQt5应用程序的用户界面。它允许你通过拖放操作添加和布局各种控件,设置属性和信号槽等。 要使用QT Designer,首先确保你已经安装了PyQt5库。然后,你可以在命令行中输入`designer`命令来启动QT Designer界面。 在QT Designer中,你可以选择不同的布局和控件,如按钮、文本框、标签等,并将它们拖放到设计区域。然后,你可以调整它们的大小和位置,并设置它们的属性,例如文本内容、字体样式、背景颜色等。 在设计界面完成后,你可以将其导出为一个.ui文件。这个文件包含了你设计的界面的描述信息。然后,你可以使用PyQt5中的uic模块将.ui文件转换为Python代码,并在你的应用程序中使用它。 以下是一个简单的示例代码,演示如何使用QT Designer创建一个带有按钮的窗口: ```python from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5 import uic class MyWindow(QMainWindow): def __init__(self): super().__init__() uic.loadUi('mywindow.ui', self) self.button.clicked.connect(self.on_button_clicked) def on_button_clicked(self): print("Button clicked!") if __name__ == '__main__': app = QApplication([]) window = MyWindow() window.show() app.exec() ``` 在这个示例中,`uic.loadUi('mywindow.ui', self)`将加载名为`mywindow.ui`的界面文件,并将其应用到`MyWindow`类的实例上。然后,我们连接按钮的`clicked`信号到`on_button_clicked`槽函数,当按钮被点击时,会调用该函数。 希望这能帮助到你开始使用PyQt5的QT Designer!如有更多问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值