Python GUI教程(八):在主窗口中調用對話框
文章首發:Python GUI教程(八):在主窗口中調用對話框
本篇將會介紹:
- 使用qt設計師創建兩個窗口
- 轉換設計師UI代碼為Python代碼
- 從主窗口中調用對話框窗口
一、創建兩個窗口
根據本篇的最終目標——在主窗口中調用對話窗口,我們先使用qt設計師創建兩個窗口,其中一個主窗口MainWindows,一個含有兩個按鈕的對話窗口Dialog。
通過qt設計師新建一個MainWindows窗口,並在其中放置一個按鈕:
保存為UI文件,再新建一個對話窗口:
同樣保存為UI文件。
這樣我們本地文件夾有兩個可供轉換為Python代碼的UI文件:
二、轉換UI文件為Python代碼文件
保存好兩個窗口的UI文件之後,我們繼續使用pyuic5工具,將這兩個UI文件轉換為Python代碼文件。
打開命令行輸入:
pyuic5 -x -o mainWindow.py mainWindow.uinnpyuic5 -x -o dialog.py dialog.uin n
運行一下轉換出來的Python文件,是否正常:
一切正常,接下來我們可以進行兩個窗口的連接和調用了。
三、從主窗口中調用對話框窗口
在進行下一步之前,我們先在主窗口mainWindow中添加一個文本標籤,設置文本為空,字體加大:
有個這個label我們可以將對對話框的操作,反饋在label標籤中。
保存UI文件,使用pyuic5重新轉換一次Python代碼。
為了在主窗口代碼中調用對話框窗口,我們需要在mainWindow.py文件中引入對話框窗口:
from GUI import dialogn
然後定義在主窗口的主類中定義一個方法,用來顯示對話框窗口:
def click_button(self):n Dialog = QtWidgets.QDialog()n ui = dialog.Ui_Dialog()n ui.setupUi(Dialog)n Dialog.show()n Dialog.exec_()n
定義好了方法,我們需要對按鈕進行點擊調用的綁定,這在setupUi()方法中進行設置:
self.pushButton.clicked.connect(self.click_button)n
這樣就實現了按鈕點擊綁定對話框
我們知道,我們的對話框是有兩個按鈕的,一個「OK」,一個「Cancel」,在我們的GUI程序中,點擊任意一個都會關閉對話框,效果似乎是一樣的,但在PyQt5的內部機制的,這是兩個不同的事件,下面我們就通過之前設置的label標籤,展示其不同的機制。
我們修改一下click_button()方法,修改如下:
def click_button(self):n Dialog = QtWidgets.QDialog()n ui = dialog.Ui_Dialog()n ui.setupUi(Dialog)n Dialog.show()n # Dialog.exec_()n rsp = Dialog.exec_()n if rsp == QtWidgets.QDialog.Accepted:n self.label.setText("點擊了OK")n else:n self.label.setText("點擊了Cannel")n
在這裡我們將對話框的運行賦值給了一個變數,然後將其與QtWidgets.QDialog.Accepted進行比較,QtWidgets.QDialog.Accepted表示的是對話框的接收事件,也就是「OK」代表的事件,如果為接收時間,設置label標籤為「點擊了OK」,否則設置label標籤為「點擊了Cannel」
推薦閱讀:
※數學不行還學AI-第4話-圖解張量(內有惡貓)
※Python數據分析之anaconda安裝和使用
※在Windows與MAC中同時安裝Python3.X與2.X的方法
※關於Python中參數傳遞和作用域的問題?
※Day 4-6, 列印、文件、函數