Alex的博客

本博客的文章均为原创,是本人从事行业多年来所遇见一些小问题的解决心得,希望可以帮助到大家!



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

浏览34  评论0  Alex于 2017-11-16 9:14
发言