pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面

 当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qt designer。

    我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面。也可以将多个界面连接起来。

    接下来,我要提供将多个UI链接起来的思路。

 

一:讲解:qt designer 自动生成的代码是怎样运行的:

(一)组成

        qt desinger自动生成的代码为一个对象和对象启动命令,对象中包含两个函数,setupUi()和retranslateUi()。

形如这样:

from ... import ....
class someclassname(object):
    def setupUi():
        ...
    def retranslateUi():
        ...​
if  __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())​​

 

(二)运行方式:

(1)两个函数setupUI和retranslateUi负责绘制Ui,其中setupUI会调用retranslateUi。

(2)if __name__ = "__main__" 及以后的语句是python的主程序运行

app = QtWidgets.QApplication(sys.argv)
......
sys.exit(app.exec_())

上面两句为pyqt主程序运行通用语句

(3)

 Dialog = QtWidgets.QDialog() # 获取窗口类型实例
 ui = someclassname()                # 取得ui的class实例
 ui.setupUi(Dialog)                       # 将ui实例绘制到窗口实例上​

(4)

Dialog.show()                               # 展示窗口​

 

二:如何组合窗口

(一)首先,建立一个主程序的python文件,然后各种import

(1)基本引用

import sys
from PyQt5 import QtCore, QtGui, QtWidgets

(2)文件引用:引用各个Ui的py文件的class

(二)实例化启动qt应用

app = QtWidgets.QApplication(sys.argv)​

(三)实例化各种窗口,方式如1.2.3 中的三个语句,例如:

!!!!注意,修改对应相关ui的py文件的变量名函数名避免冲突!!!!!!!

(1)主窗口

ChenSpider = QtWidgets.QMainWindow()
ui = Ui_ChenSpider()
ui.setupUi(ChenSpider)​

(2)弹出窗口1

Dialog = QtWidgets.QDialog()
ui2 = Ui_Dialog()
ui2.setupUi2(Dialog)​

(3)弹出窗口2

Dialog3 = QtWidgets.QDialog()
ui3 = Ui_Dialog3()
ui3.setupUi3(Dialog3)​

(四) 将弹出窗口绑定在主窗口某个按钮上

例子中,将主窗口chenSpider的loginmysqlbttn按钮绑定在窗口1上,aboutbttn绑定在窗口2上,点击弹出

bttn = ui.loginmysqlbttn
bttn.clicked.connect(Dialog.show)​

 

bttn2 = ui.aboutbttn
bttn2.clicked.connect(Dialog3.show)​

(五) 启动

if __name__ == "__main__":
    ChenSpider.show()
    sys.exit(app.exec_())
 ​

 

三:示例代码:

原来的代码已经失效,参考我的github小工具的关于按钮吧。

https://github.com/chenyansu/ChenSpiderGUI

 

转载于:https://www.cnblogs.com/chenyansu/p/7234969.html

你可能感兴趣的:(pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面)