1. 程式人生 > 其它 >PyQt5-GUI程式的基本框架

PyQt5-GUI程式的基本框架

PyQt5 GUI程式的基本框架

啟動Python自帶的程式設計和互動式環境IDLE,點選“File”→“New File”選單項,開啟一個檔案編輯視窗,在此視窗中輸入下面的程式

#使用pyqt5 純程式碼建立一個簡單的GUI程式
#匯入相應的庫
import sys
from PyQt5 import  QtCore,QtGui,QtWidgets

app=QtWidgets.QApplication(sys.argv) #建立app,用QApplication類
widgetHello=QtWidgets.QWidget() #建立窗體,用Qwidget類
widgetHello.resize(280,150) #設定窗體的寬度和高度
widgetHello.setWindowTitle("Main QApplication") #設定窗體的標題文字

LabHello=QtWidgets.QLabel(widgetHello) #建立標籤,父容器為widgetHello
LabHello.setText("Hello World,PyQt5") #設定標籤文字
font=QtGui.QFont() #建立字型物件font,用QFont類
font.setPointSize(12) #設定字型大小
font.setBold(True) #設定為粗體
LabHello.setFont(font) #設定為標籤LabHello的字型
size=LabHello.sizeHint() #獲取LabHello的合適大小,返回值是QSize類物件
LabHello.setGeometry(70,60,size.width(),size.height())
widgetHello.show() #顯示對話方塊
sys.exit(app.exec_()) #應用程式執行

程式輸入完成後,在程式編輯器視窗中點選“Run”→“Run Module”選單項,或直接按快捷鍵F5就可以執行程式,會出現下圖所示的視窗。

這是一個典型的GUI應用程式。

(1)首先匯入了PyQt5包中的一些模組,包括QtCore, QtGui, QtWidgets,其中每個模組都包含了一些類。

(2)用下面的語句建立了一個應用程式。

app=QtWidgets.QApplication(sys.argv) #建立app,用QApplication類

這裡用到了QtWidgets模組中的QApplication類。QApplication是管理GUI應用程式的控制流程和設定的類,這裡建立的應用程式物件是app。

(3)使用QtWidgets模組中的QWidget類建立了窗體物件widgetHello,然後呼叫QWidget類的resize()函式設定窗體大小,呼叫setWindowTitle()函式設定窗體標題。

(4)使用QtWidgets模組中的QLabel類建立了一個標籤物件LabHello,建立LabHello的語句是:

LabHello=QtWidgets.QLabel(widgetHello) #建立標籤,父容器為widgetHello

這裡將widgetHello作為引數傳遞給QLabel的建構函式,實際是指定widgetHello作為LabHello的父容器,這樣標籤LabHello才會顯示在窗體widgetHello上。

後面的程式碼用QLabel的介面函式setText()設定標籤的文字,又建立了一個QFont物件用於設定標籤的字型,還設定了標籤在窗體上的位置和大小。

(5)窗體顯示和程式執行。窗體widgetHello和文字標籤LabHello建立並設定好各種屬性後,就顯示窗體並執行應用程式,即程式中的最後兩行語句:

widgetHello.show() #顯示對話方塊
sys.exit(app.exec_()) #應用程式執行

這裡的窗體widgetHello是應用程式的主窗體,應用程式執行後開始訊息管理。

這個示例程式演示了使用PyQt5的一些類建立GUI程式的基本過程。首先需要用QApplication類建立一個應用程式例項,然後建立一個窗體(窗體類主要有QWidget、QDialog、QMainWindow),再建立介面元件(例如一個QLabel元件)並在窗體上顯示,最後是顯示窗體並開始應用程式的訊息迴圈。這個程式雖然功能很簡單,只顯示了一個帶標籤的視窗,關閉視窗還需要點選視窗右上角的關閉按鈕,但它已經是一個標準的GUI應用程式。

提示:從上面的程式中可以看出,PyQt5中的類都是以大寫字母Q開頭命名的,如QWidget、QApplication、QLabel等,這樣的命名規則很容易將PyQt5的類與其他的類或變數區分開來。