zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    js篇之对象数据属性与存取器属性
    使用ts-loader与webpack编译typescripts出现Module build failed: TypeError: Cannot read property 'afterCompile' of undefined
    js对象深拷贝
    前端工程化之webpack中配置babel-loader(四)
    前端工程化-webpack篇之babel-polyfill与babel-runtime(三)
    process.cwd()与__dirname的区别
    jade(pug)学习和使用
    [bzoj4033][HAOI2015]树上染色_树形dp
    [bzoj2657][Zjoi2012]旅游 journey_ 对偶图_树形dp
    [bzoj2097][Usaco2010 Dec]Exercise 奶牛健美操_贪心_树形dp_二分
  • 原文地址:https://www.cnblogs.com/chenyansu/p/7234969.html
Copyright © 2011-2022 走看看