天天看點

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

【題記】

我是一個菜鳥,這個系列是我的學習筆記。

PyQt5 出來有一段時間了, PyQt5 較之 PyQt4 有一些變化,而網上流傳的幾乎都是 PyQt4 的教程,照搬的話大多會出錯。

eric6 也是剛剛出來,eric6 與 PyQt5 結合的教程網上幾乎沒有。

本人也是一邊學習,一邊摸索,并記錄與此,希望幫到有需要的朋友,更希望路過的大俠多多指教為好。

【引子】

用 eric6 與 PyQt5 結合,非常友善的實作界面與邏輯分離,滿足python的極速GUI程式設計,你隻需要關注程式的邏輯實作,不需要在界面上花很多時間。

可以說這是一對完美的組合!

下面的内容基于:windows 7 + python 3.4.2 + PyQt5 + eric 6

【概覽】

本文實作如下的程式:

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

主要步驟如下:

1、在eric6中建立項目

2、進入PyQt5 Desinger編輯圖形界面(自動進入),并儲存

3、回到eric 6将剛才的界面檔案編譯

4、然後給界面添加自己的程式邏輯

5、py2exe打包成exe檔案(此步略)

【正文】

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

在窗體中添加一個文本标簽(label)、兩按鈕(pushButton)

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

設定文本标簽、兩按鈕的對象名(objectName)為:label_hello,pushButton_ok,pushButton_close

設定文本标簽、兩按鈕的文字(text)為:"在此顯示","确定","退出"

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

給退出按鈕添加信号/槽        (注:信号/槽機制是PyQt獨有的信号傳遞機制,使用非常友善)

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

儲存,然後關閉PyQt Designer

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

3、回到eric 6,将剛才的界面檔案編譯

回到eric 6後,發現窗體下多了個hello.ui檔案,此檔案本質是一個xml格式檔案,不能被運作,需要右擊它,選擇 編譯窗體

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

編譯成功之後,發現源檔案下多出了Ui_hello.py檔案,這個檔案就可以運作了

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

試着運作它,如圖:

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

Wow! 界面出來了。一切正常。不過你會發現,隻有退出按鈕起作用,而确定按鈕沒反應。那是因為我們還沒給确定按鈕添加邏輯代碼

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

這事好辦,到窗體下右擊hello.ui檔案,選擇 生成對話框代碼

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!
用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

此處勾選pushButton下的on_pushButton_ok_clicked()

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

回到源代碼下,發現又多出了一個hello.py檔案

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

不管三七二十一,先運作它再說。呀!錯誤!!!

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

這個錯誤應該是eric 6的一個bug!!!,去掉Ui前面的點号,再運作,就沒有報錯了。真是太好了!诶,等一下,怎麼沒看到窗體出來呢?

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

少了幾行代碼,此處可以認為也是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>

 長噓一口氣,窗體終于又出來了,但是點選确定按鈕的時候報錯了又。原因很簡單,我們還沒有覆寫給确定按鈕的邏輯代碼

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

把原來的代碼删除,修改為一句。沒錯,我們的邏輯代碼就是一句代碼:

<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>

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

儲存一下,然後運作。OK,大功告成!

用 eric6 與 PyQt5 實作python的極速GUI程式設計(系列01)--Hello world!

最後的話,eric + pyqt 進行python的gui程式設計真的是太友善了,隻需要關注邏輯實作就可以了

(一個字一個字敲,一張圖一張圖截,終于完成了。歡迎轉載,不過請保留作者名及原文連結。)

本文轉自羅兵部落格園部落格,原文連結:http://www.cnblogs.com/hhh5460/p/4232086.html,如需轉載請自行聯系原作者