用 Eric6 與 PyQt5 結合,非常方便的實現界面與邏輯分離,滿足python的極速GUI編程,你只需要關注程序的邏輯實現,而不需要在界面上花很多時間。
可以說這是一對GUI開發完美的組合!
為了方便使用在正式開始之前我們先簡單配置一下Eric6的項目工作區
配置Eric6
打開Eric6

選擇菜單欄 設置-首選項

在左側列表中選擇項目-多重項目,點擊右側圖標后選定硬盤中的一個位置,我這里是F:\Python\PyQt5文件夾。選好后點擊右下方的OK按鈕。

簡單配置后,讓我們正式開始體驗極速GUI開發
實例
建立項目
打開Eric6,菜單欄中選擇項目-新建

在項目屬性對話框中的項目名稱中輸入Hello,你會發現右下方的OK按鈕不可用。究其原因是項目文件夾中顯示的是我們剛設置的多重項目工作區目錄,也就是說在該目錄下可以存在多個項目。多個項目混在一起肯定是不行的了,還要將它們用文件夾區分開來,簡而言之就是該目錄下的每個文件夾就是一個項目(當然了,自己胡亂創建的文件夾肯定不是了)。找到原因后我們就可以解決問題了。
點擊項目文件夾后面的圖標

在打開的選擇項目文件夾對話框中右鍵點擊空白處,在彈出的菜單中選擇新建-文件夾

更改新建文件夾的名稱為Hello(一般與項目名稱同),選中該文件夾后點擊右下方的選擇文件夾按鈕

回到項目屬性對話框后可以看到項目文件夾已變成F:\Python\PyQt5\Hello,同時右下角的OK按鈕已顯示可用。

點擊OK按鈕后出現一個提示框,是否將已有文件添加到項目中?雖然該項目文件夾下還沒有任何文件,但是這里選擇Yes,因為我曾經選擇No后到運行腳本時發現不能執行該功能。

點擊Yes后在彈出的文件類型關聯對話框直接OK

觀察程序主界面的標題欄發現顯示Hello – eric6。在項目瀏覽器的頂部源代碼標簽里自動為我們生成一個_init_.py文件,該文件中沒有任何代碼,我們不用去理會。

創建窗體
點擊源代碼標簽右邊的窗體標簽,在標簽下面的空白處右鍵點擊,彈出的菜單選擇新建窗體

彈出新建窗體對話框,可以選擇其它窗體類型,這里我們使用默認對話框類型,點擊OK按鈕

在彈出的新建窗體保存對話框中可以看到程序已將路徑定位到項目文件夾下,輸入文件名后點擊保存按鈕

在Eric6的窗體標簽下可以看到程序已自動創建了HelloWindow.ui文件

設計窗體
點擊上一步的保存按鈕后,計算機會直接打開Qt設計師,並自動將HelloWindow.ui加載到程序中

在左側的Widget Box里找到Push Button控件,用鼠標左鍵按住該控件不放,拖拽到HelloWindow.ui的設計窗體。拖拽兩個Push Button控件到窗體

再找到Label控件,拖拽一個該控件到窗體

在程序的右側觀察對象查看器與屬性編輯器。使用對象查看器可以快速選取窗體中的控件,屬性編輯器可以編輯修改窗體、控件的各種屬性。
利用對象查看器選擇我們剛拖拽的三個控件,分別將它們的objectName屬性更改成:
- 左邊PushButton:Button_ok
- 右邊PushButton:Button_close
- Label:label

分別將它們的text屬性更改成:
- 左邊PushButton:確定
- 右邊PushButton:關閉
- Label:顯示

編輯信號/槽
接下來給關閉按鈕添加退出程序的命令。在Qt設計師中,可以很直觀的為控件添加事件命令,在PyQt5中這種方式添加的事件命令被稱為信號/槽。(注:信號/槽機制是PyQt獨有的信號傳遞機制,使用非常方便)
點擊工具欄的編輯信號/槽圖標

鼠標移動到關閉控件上面,左鍵按下拖拽處紅色地線標志后松開鼠標

彈出配置鏈接窗口,在該窗口中勾選顯示從QWidget繼承的信號和槽

在左側列表選擇clicked(),在右側列表選擇close()。
這個操作的意義為:當點擊關閉按鈕時,執行關閉命令

點擊OK后可以看到剛選擇的兩項已鏈接附加到關閉按鈕上

點擊工具欄中的保存按鈕后關閉Qt設計師程序

編譯測試
回到Eric6中,右鍵點擊HelloWindow.ui文件,在彈出的菜單中選擇編譯窗體

稍等片刻后程序會提示編譯成功

返回源代碼標簽可以發現項目中多了一個Ui_HelloWindow.py文件,雙擊該文件可以查看我們設計好的窗體代碼

點擊菜單欄的開始-運行腳本(或直接按鍵盤F2鍵)

在彈出的運行腳本對話框直接OK

OK后即可看到我們剛在Qt設計師中設計的窗體,點擊關閉按鈕

彈出對話框中直接OK,即可關閉該程序

進一步完善程序
到現在我們沒有編寫一句代碼即可實現了程序的顯示與退出
接下來我們手動給確定按鈕添加事件命令
在Eric6中的項目瀏覽器中找到HelloWindow.ui文件,右鍵點擊該文件,彈出菜單中選擇生成對話框代碼

在彈出的窗體代碼產生器窗口中點擊新建

彈出新建對話框類中輸入類名后點擊OK

回到窗體代碼產生器窗口后展開Button_ok(QPushButton),勾選on_Button_ok_clicked(),點擊OK

在項目瀏覽器中可以看到源代碼標簽下又多了一個HelloWindow.py文件

雙擊該文件查看程序內容。若現在F2,程序將會報錯,將
from .Ui_HelloWindow import Ui_Dialog
中.Ui前面的點去掉
from Ui_HelloWindow import Ui_Dialog

保存后若F2,發現還是不行,程序一閃而過。給源碼添加以下內容

保存后F2,沒問題了,可以點擊確定按鈕后還是會報錯,是因為我們還沒有告訴程序點擊確定按鈕后程序做出什么反應,修改on_Button_ok_clicked函數如下

保存后F2,點擊確定后Label內容顯示會變成這是我的第一個 PyQt5 程序,一切正常

附錄與后記
附圖
附加圖:Label控件的位置與寬度

附加圖:完成后的文件

后記
雖然我們通過這個實例能夠感受得到PyQt5與Eric6結合使用的強大功能與極速GUI開發的能力非比尋常,可是對於剛接觸PyQt5與Eric6的童鞋來說,要想發揮PyQt5與Eric6的強大功能與極速開發也是痴人說夢,究其原因是PyQt5與Eric6的結合讓我們只用少量的代碼編寫就可以實現很多強大的功能,幾乎底層的代碼都不用去自己編寫,因此,PyQt5真正強大的內容離我們很遠。
這個實例就像一層窗戶紙被捅破了,但是我們根本就邁不過去。所以若要真的學會PyQt5我們還需多學些PyQt5的底層內容,多手動編寫一些代碼。當隨着我們的PyQt5水平不斷提高,到那時我們會發現PyQt5與Eric6結合使用才是如虎添翼,馳騁在程序的海洋。
