前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處
1. 介紹
Python GUI 常用的 3 種框架是:Tkinter、wxpython、PyQt5
PyQt5 基于 Qt,是 Python 和 Qt 的結合體,可以用 Python 語言撰寫跨平臺的 GUI 應用程式
相比 Tkiner和 wxpython,PyQt5 利用自帶的 Qt Designer 可視化工具進行界面設計,可以非常快速地開發出一款功能強大、界面美觀的 GUI 應用程式
2. 安裝
以 Mac OSX 為例,PC 下的操作類似,
首先,在系統內部安裝 qt 應用
# 安裝qt brew install qt
然后,在 Python 虛擬環境下安裝 sip 和 pyqt5 兩個依賴庫
# 安裝依賴sip pip3 install sip # 安裝依賴pyqt5 pip3 install pyqt5
接著,在 Pycharm 中配置 External Tools,新建 Qt Designer 和 PyUIC 兩個命令
# Qt Designer 配置 Program:/usr/local/Cellar/qt/5.14.1/libexec/Designer.app Working directory:/usr/local/Cellar/qt/5.14.1/libexec # PyUIC # Python環境路徑 Program:/usr/local/bin/python3.7 # 引數 Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py # 路徑【固定】 Working directory:$ProjectFileDir$
其中,在第一步安裝 Qt 應用檔案夾下,找到 Designer.app 和 libexec 兩個檔案,配置進去
由于 QtDesigner 生成的檔案是 *.ui 檔案,需要借助 pyqt5 中的 pyuic,將 ui 檔案轉換為 Python 檔案
最后,可以直接在 Pycharm 中快速打開 Designer 界面、ui 轉 py 檔案這兩個操作,
3. 常用功能介紹
QtDesigner 是一個非常強大的 GUI 設計工具,生成的檔案格式為:*.ui
QtDesigner 主要包含下面 6 部分:
- 主設計界面區
- 控制元件區
- 控制元件屬性區
- 信號和槽函式區
- 資源圖片區
- 控制元件結構樹區
其中,
主設計界面區:用于視窗編輯,最終的 GUI 展示區域
控制元件區:包含文本、輸入框、選擇器、容器等控制元件,可以直接拖拉到視窗進行布局
屬性區:用于定義控制元件的屬性,包含:內容、字體大小、寬和高等
信號和槽函式區:可以很方便地為一個控制元件指定一個事件監聽,比如:單擊、選中事件等
資源圖片區域:用于匯入本地的資源檔案,在控制元件中使用,比如:圖片
控制元件結構樹區:可以很直觀地顯示控制元件間的結構關系
4.來個例子
第 1 步,我們從控制元件區拖 3 個按鈕和 2 個輸入框到界面設計區域
第 2 步,選中控制元件,滑鼠右鍵為控制元件新增屬性,比如:控制元件內容、控制元件名稱(相當于id),對于一些復雜的屬性設定,需要在屬性區域單獨進行設定
編輯完 UI 界面之后,會在本地生成一個 *.ui 的檔案
第 3 步,選擇 *.ui 檔案,在 Pycharm 中使用 PyUIC 命令,將 ui 檔案轉換為 py 檔案
# ui檔案轉為py檔案 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 790) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(130, 80, 111, 41)) self.pushButton.setObjectName("pushButton") self.username = QtWidgets.QLineEdit(self.centralwidget) self.username.setGeometry(QtCore.QRect(260, 80, 271, 41)) self.username.setObjectName("username") self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(130, 150, 111, 41)) self.pushButton_2.setObjectName("pushButton_2") self.password = QtWidgets.QLineEdit(self.centralwidget) self.password.setGeometry(QtCore.QRect(260, 150, 271, 41)) self.password.setObjectName("password") self.login = QtWidgets.QPushButton(self.centralwidget) self.login.setGeometry(QtCore.QRect(260, 230, 141, 61)) self.login.setObjectName("login") MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "用戶名:")) self.pushButton_2.setText(_translate("MainWindow", "密碼:")) self.login.setText(_translate("MainWindow", "登錄"))
第 4 步,為按鈕添加點擊事件
使用 控制元件名.信號.connect(槽函式) 的形式,為控制元件添加一個點擊事件的監聽
class Ui_MainWindow(object): def setupUi(self, MainWindow): # 為登錄按鈕指定事件 # clicked:信號,login_met:槽函式 self.login.clicked.connect(self.login_met) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def login_met(self): """ 登錄事件(槽函式) :return: """ # 用戶名輸入框的內容 username = self.login.text() # 密碼輸入框的內容 password = self.password.text() print("輸入的用戶名是:", username, "密碼是:", password)
第 5 步,展示界面
最后,新建一個 py 檔案,實體化一個 QApplication 物件,將上面創建的 MainWindow 展示出來即可,
import sys from PyQt5.QtWidgets import QApplication, QMainWindow # 界面檔案 from temp import * class CustomUI(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(CustomUI, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) cutomUI = CustomUI() cutomUI.show() sys.exit(app.exec_())
需要注意的是,這部分內容僅僅是呼叫顯示 GUI 界面的邏輯,實際專案開發程序中很少變動,
5.總結
通過上面的例子發現,使用 PyQt5 構建 GUI 真的很方便,大部分的作業都可以在 QtDesigner 設計完成,然后回歸到 Pycharm中,轉為 py 檔案、撰寫信號和槽函式,就能快速開發 GUI 圖形用戶界面
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/124154.html
標籤:Python
