【題記】
我是一個菜鳥,這個系列是我的學習筆記。
PyQt5 出來有一段時間了, PyQt5 較之 PyQt4 有一些變化,而網上流傳的幾乎都是 PyQt4 的教程,照搬的話大多會出錯。
eric6 也是剛剛出來,eric6 與 PyQt5 結合的教程網上幾乎沒有。
本人也是一邊學習,一邊摸索,并記錄與此,希望幫到有需要的朋友,更希望路過的大俠多多指教為好。
【引子】
用 eric6 與 PyQt5 結合,非常友善的實作界面與邏輯分離,滿足python的極速GUI程式設計,你隻需要關注程式的邏輯實作,不需要在界面上花很多時間。
可以說這是一對完美的組合!
下面的内容基于:windows 7 + python 3.4.2 + PyQt5 + eric 6
【概覽】
本文實作如下的程式:

主要步驟如下:
1、在eric6中建立項目
2、進入PyQt5 Desinger編輯圖形界面(自動進入),并儲存
3、回到eric 6将剛才的界面檔案編譯
4、然後給界面添加自己的程式邏輯
5、py2exe打包成exe檔案(此步略)
【正文】
在窗體中添加一個文本标簽(label)、兩按鈕(pushButton)
設定文本标簽、兩按鈕的對象名(objectName)為:label_hello,pushButton_ok,pushButton_close
設定文本标簽、兩按鈕的文字(text)為:"在此顯示","确定","退出"
給退出按鈕添加信号/槽 (注:信号/槽機制是PyQt獨有的信号傳遞機制,使用非常友善)
儲存,然後關閉PyQt Designer
3、回到eric 6,将剛才的界面檔案編譯
回到eric 6後,發現窗體下多了個hello.ui檔案,此檔案本質是一個xml格式檔案,不能被運作,需要右擊它,選擇 編譯窗體
編譯成功之後,發現源檔案下多出了Ui_hello.py檔案,這個檔案就可以運作了
試着運作它,如圖:
Wow! 界面出來了。一切正常。不過你會發現,隻有退出按鈕起作用,而确定按鈕沒反應。那是因為我們還沒給确定按鈕添加邏輯代碼
這事好辦,到窗體下右擊hello.ui檔案,選擇 生成對話框代碼
此處勾選pushButton下的on_pushButton_ok_clicked()
回到源代碼下,發現又多出了一個hello.py檔案
不管三七二十一,先運作它再說。呀!錯誤!!!
這個錯誤應該是eric 6的一個bug!!!,去掉Ui前面的點号,再運作,就沒有報錯了。真是太好了!诶,等一下,怎麼沒看到窗體出來呢?
少了幾行代碼,此處可以認為也是eric 6的一個bug。那就自己動手吧,在hello.py的最下面添加這幾行:
1
2
3
4
5
6
7
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>import</code> <code>sys</code>
<code> </code><code>from</code> <code>PyQt5.QtWidgets </code><code>import</code> <code>QApplication</code>
<code> </code><code>app </code><code>=</code> <code>QApplication(sys.argv)</code>
<code> </code><code>dlg </code><code>=</code> <code>Hello()</code>
<code> </code><code>dlg.show()</code>
<code> </code><code>sys.exit(app.exec_())</code>
長噓一口氣,窗體終于又出來了,但是點選确定按鈕的時候報錯了又。原因很簡單,我們還沒有覆寫給确定按鈕的邏輯代碼
把原來的代碼删除,修改為一句。沒錯,我們的邏輯代碼就是一句代碼:
<code>@pyqtSlot</code><code>()</code>
<code> </code><code>def</code> <code>on_pushButton_ok_clicked(</code><code>self</code><code>):</code>
<code> </code><code>self</code><code>.label_hello.setText(</code><code>'Hello world!'</code><code>)</code>
儲存一下,然後運作。OK,大功告成!
最後的話,eric + pyqt 進行python的gui程式設計真的是太友善了,隻需要關注邏輯實作就可以了
(一個字一個字敲,一張圖一張圖截,終于完成了。歡迎轉載,不過請保留作者名及原文連結。)
本文轉自羅兵部落格園部落格,原文連結:http://www.cnblogs.com/hhh5460/p/4232086.html,如需轉載請自行聯系原作者