• 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

  • 相关阅读:
    windows下搭建基于eclipse插件的GoLang开发环境
    vtk类之vtkImageReslice:基本算法,对体数据沿着轴进行切片
    vtk类之vtkTextureMapToSphere:纹理映射算法, 映射球体纹理
    wxpython 之 GDI 画刷Brush(三)
    c# 获取Rss数据
    C# 基础知识系列之面向对象基础
    SilverLight 得到文件绝对路径
    SilverLight C# 读取并修改App.config文件
    Silverlight 脱离浏览器
    C# 中New关键字的用法
  • 原文地址:https://www.cnblogs.com/chenyansu/p/7234969.html
Copyright © 2020-2023  润新知