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, 列印、文件、函數

TAG:Python | 编程 | GUI设计 |