做爲一個程序的開發者,咱們僅僅須要在相應路徑經過命令行就可執行那個程序。可是,不懂行的人不理解這個黑框框的東西,陌生領域任何人都沒有安全感,因此他們是拒絕接受一個項目僅僅只是經過一個黑框框來執行的。因此GUI窗口呼之而出。html
「Life is short (You need Python)」
-- Bruce Eckelpython
python做爲一門快速開發語言,其GUI模塊天然也不例外。用python來作GUI的模塊、包有:
Tk、wxWidgets、Qt、GTK,本篇文章是學習的是用Qt的PyQt4.(PyQt5只適合Python3.0以上)linux
本篇文章這樣安排:
1:簡介
2:PyQt4的安裝,配合Pycharm的安裝
3:PyQt4必定要知道的基礎
4:找到你須要的界面配圖和代碼
5:深刻一個複雜的例子
6:總結spring
PyQt是用來建立GUI應用程序的工具包,它把Python和成功的Qt綁定在一塊兒,Qt庫是這個星球上最強大的庫之一,若是不是最強大的話。PyQt的官方網站是 www.riverbankcomputing.co.uk , 它由 Phil Thompson 開發。
將程序包裝在GUI界面裏,能夠:shell
將輸入經過多種途徑如文本框、彈出路徑選擇等輸入到程序裏。安全
將輸出經過文本框顯示出來app
將執行信息如如報錯信息、運行進度經過文本框或進度條顯示出來函數
先介紹PyQt4安裝和配合Pycharm的使用。工具
或簡要或詳細敘述PyQt的必須知道的知識,只有瞭解、理解、掌握這些才能看懂任何一個PyQt程序代碼。佈局
配合大量現成的GUI圖形界面的圖片,你能夠與本身腦子裏的效果圖對應,迅速找到你須要使用衆多PyQt類中的哪個,而且有實現代碼(引用的)。向下面這樣,經過連接,快速找到想要的代碼。代碼地址
我認爲這很是重要,由於做爲一個初學者,咱們經常遇到這樣的困境:
我大概知道我要完成哪些功能,但我不知道怎麼畫出來。
我能畫出來,但我不知道調用什麼類去實現,甚至在GOOGLE上找這個類的時候,都不知道用什>麼詞彙去描述你的界面,略尷尬。
深刻一個例子,調用本身的腳本配合GUI界面,寫出一個能夠展現的程序。
總結一下遇到的坑
官網文檔:http://pyqt.sourceforge.net/Docs/PyQt4/
也是官方文檔PyQt4 APIs http://pyqt.sourceforge.net/Docs/PyQt4/modules.html
zetcode:良心文檔每行代碼都給解釋。http://zetcode.com/gui/pyqt4/
zetcode中文版:http://www.qaulau.com/books/PyQt4_Tutorial/index.html
PyQt4 精彩實例分析:受益不少,本文第4節基本靠它了。http://www.linuxidc.com/Linux/2012-06/63652.htm
一個不錯的博客文章:http://blog.csdn.net/a359680405/article/details/45096185
QT參考文檔:玩到最後不得不看QT了:http://www.kuqin.com/qtdocument/
QT designer文檔:http://doc.qt.io/qt-4.8/designer-manual.html
基本引用了以上資源裏面的文章,特別是來源:Linux社區 做者:chumpklutz和來源:CSDN 做者:翻滾吧挨踢男
基本參考了PyQt5+python3+pycharm開發環境配置
首先安裝分爲兩個部分:PyQt包和Pycharm設置
PyQt4包:
下載地址
注意:32位的仍是64位的,Python2仍是python3
而後將安裝路徑放入系統路徑中去:
變量名:QT_QPA_PLATFORM_PLUGIN_PATH
變量值:C:Python34Libsite-packagesPyQt4plugins
Pycharm配置:
步驟以下文:
http://cristalspring.blog.163.com/blog/static/14432742520156510264082/
3.1.1 先在Qt designer裏面設計個大概,在Pycharm裏面經過經過PyUIC將Qt designer裏面的example.ui文件轉爲example.py文件, 以後就能夠直接使用example.py文件了。 3.1.2 注意example.py只是圖形界面靜態佈局的程序,你還要把你的腳本程序script.py結合進入,因此還須要一個myWindow.py程序 用來鏈接example.py和script.py.也就是說在myWindow.py中import exampy;import script.py. 3.1.3 myWindow.py中一般包括對圖形佈局的一些改動和結合、添加按鈕動做、等等使圖形界面'活'起來的方法。
對於這樣一個界面:
第一步:設計好界面的草圖
這裏推薦使用Balsamiq Mockups 3
設計以下:
第二步:實現這個草圖
界面有三種能夠選擇Dialog、Widget、QMainWindow至於選哪一種詳細能夠見這裏:
http://www.qtcentre.org/threads/3465-Difference-between-Dialog-and-widget-and-QMainWindow
http://stackoverflow.com/questions/3298792/whats-the-difference-between-qmainwindow-qwidget-and-qdialog
這裏咱們使用Widget,其它兩種都是由之而來
在上圖的草圖中,主要有標籤、輸入框和按鈕三種元素,怎樣去用代碼實現呢?
打開Qt designer,它位於PyQt4的安裝包中,具體位置在D:\Program Files\Python\Lib\site-packages\PyQt4
打開後以下圖
能夠在左側選擇相應的按鈕,僅僅經過拖拽完成草圖界面。
而後經過Pycharm轉爲.py文件,在Pycharm中單擊該.ui文件,而後點擊圖中選項
主要類介紹:QtGui Module
主要有兩個包:
QtCore
模塊包括了核心的非GUI功能,該模塊用來對時間、文件、目錄、各類數據類型、流、網址、媒體類型、線程或進程進行處理。
QtGui
模塊包括圖形化窗口組件和及相關類。包括如按鈕、窗體、狀態欄、滑塊、位圖、顏色、字體等等。
總的來講:QtGui
負責長得好看,QtCore
負責有用。
QtGui舉例:
# simple.py import sys from PyQt4 import QtGui app = QtGui.QApplication(sys.argv) widget = QtGui.QWidget() widget.resize(250, 150) widget.setWindowTitle('simple') widget.show() sys.exit(app.exec_()) 上面的代碼顯示在屏幕上顯示一個小窗體。 import sys from PyQt4 import QtGui 咱們在這裏進行一些必要的import操做。基本的GUI組件在 QtGui 模塊中。 app = QtGui.QApplication(sys.argv) 每一個PyQt4程序必須建立一個application對象,application在 QtGui 模塊中, sys.argv 參數是命令行中的一組參數。Python腳本能夠在shell中運行,這樣,咱們能夠控制腳本的啓動。 widget = QtGui.QWidget() QWidget 窗口組件是PyQt4中全部用戶界面對象的基類,咱們使用 QWidget 默認的構造,沒有父親。沒有父親的窗口組件稱爲窗體。 widget.resize(250, 150) resize() 方法調整了 widget 的大小,寬250像素,高150像素。 widget.setWindowTitle('simple') 這裏咱們爲窗口設置了標題,標題顯示在標題欄上。 widget.show() show() 方法將窗口呈如今屏幕上。 sys.exit(app.exec_()) 最後,咱們輸入應用程序的主事件循環,事件處理從這裏開始。主事件循環從窗口系統接收事件並分發到應用程序的窗口組件上。當主事件循環結束,若是咱們調用 exit() 方法或者主窗口組件被銷燬。 sys.exit() 方法確保乾淨的退出。將通知環境應用程序是如何結束的。
QtCore舉例:
import PyQt4.QtGui import * from PyQt4.QtCore import * import sys app=QtGui.QApplication(sys.argv) b=QPushButton("Hello Kitty!") b.show() app.connect(b,SIGNAL("clicked()"),app,SLOT("quit()")) app.exec_() 第1行導入PyQt4.QtGui的全部類及模塊,包括QApplication,全部Qt圖形化應用程序都必須包含此文件,它包含了Qt圖形化應用程序的各類資源,基本設置,控制流以及事件處理等。 第5行新建立了一個QApplication對象,每一個Qt應用程序都必須有且只有一個QApplication對象,採用sys.argv做爲參數,便於程序處理命令行參數。 第6行建立了一個QPushButton對象,並設置它的顯示文本爲「Hello Kitty!」,因爲此處並無指定按鈕的父窗體,所以以本身做爲主窗口。 第7行調用show()方法,顯示此按鈕。控件被建立時,默認是不顯示的,必須調用show()函數來顯示它。 第8行的connect方法是Qt最重要的特徵,即信號與槽的機制。當按鈕被按下則觸發clicked信號,與之相連的QApplication對象的槽quit()響應按鈕單擊信號,執行退出應用程序的操做。關於信號與槽機制在本實例最後將進行詳細的分析。 最後調用QApplication的exec_()方法,程序進入消息循環,等待可能輸入進行響應。Qt完成事件處理及顯示的工做,並在應用程序退出時返回exec_()的值。
!
圖片描述