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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM