當我們通過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