用 eric6 與 PyQt5 實現python的極速GUI編程(35篇PyQT和200多篇Python)

【題記】html

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

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

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

本人也是一邊學習,一邊摸索,並記錄與此,但願幫到有須要的朋友,更但願路過的大俠多多指教爲好。app

 

【引子】學習

用 eric6 與 PyQt5 結合,很是方便的實現界面與邏輯分離,知足python的極速GUI編程,你只須要關注程序的邏輯實現,不須要在界面上花不少時間。ui

能夠說這是一對完美的組合!spa

下面的內容基於:windows 7 + python 3.4.2 + PyQt5 + eric 63d

 

【概覽】code

本文實現以下的程序:

   

主要步驟以下:

一、在eric6中新建項目

二、進入PyQt5 Desinger編輯圖形界面(自動進入),並保存

三、回到eric 6將剛纔的界面文件編譯

四、而後給界面添加本身的程序邏輯

五、py2exe打包成exe文件(此步略)

 

【正文】

一、在eric6中新建項目

 

 

 

 

 

 

二、進入PyQt5 Desinger編輯圖形界面(自動進入),並保存

 

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

設置文本標籤、兩按鈕的對象名(objectName)爲:label_hello,pushButton_ok,pushButton_close

設置文本標籤、兩按鈕的文字(text)爲:"在此顯示","肯定","退出"

 

退出按鈕添加信號/槽        (注:信號/槽機制是PyQt獨有的信號傳遞機制,使用很是方便)

 

 

保存,而後關閉PyQt Designer

 

三、回到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
if  __name__  = =  '__main__' :
     import  sys
     from  PyQt5.QtWidgets  import  QApplication
     app  =  QApplication(sys.argv)
     dlg  =  Hello()
     dlg.show()
     sys.exit(app.exec_())

 長噓一口氣,窗體終於又出來了,可是點擊肯定按鈕的時候報錯了又。緣由很簡單,咱們尚未覆寫給肯定按鈕的邏輯代碼

把原來的代碼刪除,修改成一句。沒錯,咱們的邏輯代碼就是一句代碼:

1
2
3
@pyqtSlot ()
     def  on_pushButton_ok_clicked( self ):
         self .label_hello.setText( 'Hello world!' )

 

保存一下,而後運行。OK,大功告成!

 

 

 

最後的話,eric + pyqt 進行python的gui編程真的是太方便了,只須要關注邏輯實現就能夠了

 

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

http://www.cnblogs.com/hhh5460/p/4232086.html

 

https://wiki.python.org/moin/IntegratedDevelopmentEnvironments

相關文章
相關標籤/搜索