圖解——PyQt4從入門到運用

做爲一個程序的開發者,咱們僅僅須要在相應路徑經過命令行就可執行那個程序。可是,不懂行的人不理解這個黑框框的東西,陌生領域任何人都沒有安全感,因此他們是拒絕接受一個項目僅僅只是經過一個黑框框來執行的。因此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

1.簡介

1.1.PyQt4能作什麼

PyQt是用來建立GUI應用程序的工具包,它把Python和成功的Qt綁定在一塊兒,Qt庫是這個星球上最強大的庫之一,若是不是最強大的話。PyQt的官方網站是 www.riverbankcomputing.co.uk , 它由 Phil Thompson 開發。
將程序包裝在GUI界面裏,能夠:shell

  • 將輸入經過多種途徑如文本框、彈出路徑選擇等輸入到程序裏。安全

  • 將輸出經過文本框顯示出來app

  • 將執行信息如如報錯信息、運行進度經過文本框或進度條顯示出來函數

1.2.文章安排

  • 先介紹PyQt4安裝和配合Pycharm的使用。工具

  • 或簡要或詳細敘述PyQt的必須知道的知識,只有瞭解、理解、掌握這些才能看懂任何一個PyQt程序代碼。佈局

  • 配合大量現成的GUI圖形界面的圖片,你能夠與本身腦子裏的效果圖對應,迅速找到你須要使用衆多PyQt類中的哪個,而且有實現代碼(引用的)。向下面這樣,經過連接,快速找到想要的代碼。
    QStringList類代碼地址

我認爲這很是重要,由於做爲一個初學者,咱們經常遇到這樣的困境:

  • 我大概知道我要完成哪些功能,但我不知道怎麼畫出來。

  • 我能畫出來,但我不知道調用什麼類去實現,甚至在GOOGLE上找這個類的時候,都不知道用什>麼詞彙去描述你的界面,略尷尬。

  • 深刻一個例子,調用本身的腳本配合GUI界面,寫出一個能夠展現的程序。

  • 總結一下遇到的坑

1.3.一些好的資源

官網文檔: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

1.4.引用說明

基本引用了以上資源裏面的文章,特別是來源:Linux社區 做者:chumpklutz來源:CSDN 做者:翻滾吧挨踢男

2.PyQt4的安裝,配合Pycharm的安裝

基本參考了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.PyQt4必定要知道的基礎

3.1.開發流程:

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中一般包括對圖形佈局的一些改動和結合、添加按鈕動做、等等使圖形界面'活'起來的方法。

3.2.步驟及相關知識

對於這樣一個界面:
圖片描述

第一步:設計好界面的草圖

這裏推薦使用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

打開後以下圖
bVvQgF

能夠在左側選擇相應的按鈕,僅僅經過拖拽完成草圖界面。
而後經過Pycharm轉爲.py文件,在Pycharm中單擊該.ui文件,而後點擊圖中選項
Center

3.3.主要類介紹

主要類介紹:QtGui Module
主要有兩個包:

QtCore

QtCore 模塊包括了核心的非GUI功能,該模塊用來對時間、文件、目錄、各類數據類型、流、網址、媒體類型、線程或進程進行處理。

QtGui

QtGui 模塊包括圖形化窗口組件和及相關類。包括如按鈕、窗體、狀態欄、滑塊、位圖、顏色、字體等等。

總的來講:QtGui負責長得好看,QtCore負責有用。

QtGui舉例:
simple.png

# 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舉例:
120624071596002.png

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_()的值。

3.4.信號和事件

3.5.一些經驗

4.找到你須要的界面配圖和代碼

實例1 Hello Kitty!

代碼連接

Hello Kitty

實例2 標準對話框的使用

代碼連接

圖片描述
圖片描述
圖片描述

實例3 使用標準輸入框

代碼連接

圖片描述圖片描述圖片描述圖片描述圖片描述

各類消息框的使用

代碼連接

圖片描述圖片描述圖片描述圖片描述
圖片描述圖片描述圖片描述

實現QQ抽屜效果

代碼連接

圖片描述

表格的使用

代碼連接

圖片描述

使用進度條

代碼連接

圖片描述圖片描述

利用Qt Designer設計一個對話框

代碼連接

圖片描述圖片描述圖片描述圖片描述
圖片描述圖片描述圖片描述圖片描述
圖片描述圖片描述

在程序中使用Ui

代碼連接

圖片描述圖片描述圖片描述圖片描述圖片描述

基本佈局管理

代碼連接

圖片描述

多文檔

代碼連接

圖片描述圖片描述!圖片描述圖片描述

分割窗口

代碼連接

圖片描述

停靠窗口

代碼連接

圖片描述圖片描述

堆棧窗口

代碼連接

圖片描述圖片描述

綜合佈局實例

代碼連接

圖片描述圖片描述圖片描述圖片描述

可擴展對話框

代碼連接

圖片描述圖片描述

利用QPalette改變控件顏色

代碼連接

圖片描述

窗體的淡入淡出效果

代碼連接

圖片描述

不規則窗體

代碼連接

圖片描述

電子鐘

代碼連接

圖片描述

程序啓動畫面

代碼連接

圖片描述

基本QMainWindow主窗口程序

代碼連接

圖片描述

打印文本

代碼連接

圖片描述

打印圖像

代碼連接

圖片描述

5.深刻一個複雜的例子

6.總結

相關文章
相關標籤/搜索