吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何快速開發出功能強大、界面美觀的GUI 應用程序

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 14:45 ? 次閱讀

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 圖形用戶界面。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 應用程序
    +關注

    關注

    38

    文章

    3292

    瀏覽量

    57912
  • 可視化
    +關注

    關注

    1

    文章

    1200

    瀏覽量

    21033
  • GUI
    GUI
    +關注

    關注

    3

    文章

    662

    瀏覽量

    39890
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037
收藏 人收藏

    評論

    相關推薦

    圖形界面開發工具GUI Guider的使用教程

    GUI Guider是NXP推出的一款功能強大且對用戶非常友好的圖形界面開發工具。目前最新版本是1.6.1。
    的頭像 發表于 12-20 09:49 ?2w次閱讀
    圖形<b class='flag-5'>界面</b><b class='flag-5'>開發</b>工具<b class='flag-5'>GUI</b> Guider的使用教程

    Python是如何使用Tkinter快速創建GUI應用程序

    Tkinter是什么?Python是如何使用Tkinter快速創建GUI應用程序的?
    發表于 12-23 07:15

    適用于移動終端的GUI設計與實現

    介紹一種適用于移動終端的圖形用戶界面GUI)系統的設計與實現,使基于該GUI系統開發的移動終端應用程序具有
    發表于 09-22 09:57 ?10次下載

    基于WinCE應用程序GUI界面開發方案

      本文旨在介紹嵌入式系統在Wince下進行GUI應用程序開發可以選擇的不同GUI開發框架。
    發表于 09-18 15:38 ?5次下載
    基于WinCE<b class='flag-5'>應用程序</b><b class='flag-5'>GUI</b><b class='flag-5'>界面</b>的<b class='flag-5'>開發</b>方案

    Android應用程序GUI遍歷自動化方法

    和性能。 為了提高應用程序自動執行技術的圖形用戶界面GUI)覆蓋率和自動化程度以滿足Android應用
    發表于 12-09 11:06 ?0次下載
    Android<b class='flag-5'>應用程序</b><b class='flag-5'>GUI</b>遍歷自動化方法

    【產品應用】用 AWTK 和 AWPLC 快速開發嵌入式應用程序 (2)-走馬燈

    全稱 Toolkit AnyWhere,是 ZLG 開發的開源 GUI 引擎,旨在為嵌入式系統、WEB、各種小程序、手機和 PC 打造的通用 GUI 引擎,為用戶提供一個
    的頭像 發表于 05-31 18:05 ?552次閱讀
    【產品應用】用 AWTK 和 AWPLC <b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (2)-走馬燈

    用AWTK和AWPLC快速開發嵌入式應用程序 (1)-溫度控制器

    ToolkitAnyWhere,是ZLG開發的開源GUI引擎,旨在為嵌入式系統、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個
    的頭像 發表于 09-28 09:57 ?767次閱讀
    用AWTK和AWPLC<b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (1)-溫度控制器

    【Z站推薦】用 AWTK 和 AWPLC 快速開發嵌入式應用程序 (2)-走馬燈

    ,是ZLG開發的開源GUI引擎,旨在為嵌入式系統、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個功能強大、高效可靠、簡單
    的頭像 發表于 10-13 14:38 ?734次閱讀
    【Z站推薦】用 AWTK 和 AWPLC <b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (2)-走馬燈

    【產品應用】用 AWTK 和 AWPLC 快速開發嵌入式應用程序 (4)- 自定義功能塊(上)

    為嵌入式系統、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕松做出炫酷效果的GUI引擎。AWPLC是ZLG自主
    的頭像 發表于 11-02 09:56 ?817次閱讀
    【產品應用】用 AWTK 和 AWPLC <b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (4)- 自定義<b class='flag-5'>功能</b>塊(上)

    【產品應用】用 AWTK 和 AWPLC 快速開發嵌入式應用程序 (3)- 定時器

    ToolkitAnyWhere,是ZLG開發的開源GUI引擎,旨在為嵌入式系統、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個
    的頭像 發表于 11-02 10:02 ?808次閱讀
    【產品應用】用 AWTK 和 AWPLC <b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (3)- 定時器

    【產品應用】用 AWTK 和 AWPLC 快速開發嵌入式應用程序 (5)- 自定義功能塊(下)

    的開源GUI引擎,旨在為嵌入式系統、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕松做出炫酷效果的
    的頭像 發表于 11-04 10:12 ?916次閱讀
    【產品應用】用 AWTK 和 AWPLC <b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (5)- 自定義<b class='flag-5'>功能</b>塊(下)

    【產品應用】用 AWTK 和 AWPLC 快速開發嵌入式應用程序 (2)-走馬燈

    ,是ZLG開發的開源GUI引擎,旨在為嵌入式系統、WEB、各種小程序、手機和PC打造的通用GUI引擎,為用戶提供一個功能強大、高效可靠、簡單
    的頭像 發表于 06-08 10:13 ?688次閱讀
    【產品應用】用 AWTK 和 AWPLC <b class='flag-5'>快速</b><b class='flag-5'>開發</b>嵌入式<b class='flag-5'>應用程序</b> (2)-走馬燈

    LVGL結合RT-thread快速開發出漂亮GUI的利器GUI-Guider

    GUI-Guider是一種功能強大的軟件,它為用戶提供了一種簡單直觀的方式來創建和設計圖形用戶界面GUI)。
    的頭像 發表于 11-14 12:38 ?3965次閱讀
    LVGL結合RT-thread<b class='flag-5'>快速</b><b class='flag-5'>開發出</b>漂亮<b class='flag-5'>GUI</b>的利器<b class='flag-5'>GUI</b>-Guider

    python窗口圖形界面編程

    Python是一種功能強大而又簡單易用的編程語言,支持多種編程范式,包括面向過程、面向對象和函數式編程。除了用于開發各種類型的應用程序和網絡服務,Python還提供了豐富的圖形用戶界面
    的頭像 發表于 11-22 14:23 ?921次閱讀

    上位機可視化界面編程軟件有哪些

    上位機可視化界面編程軟件是一類用于開發圖形用戶界面(GUI)的軟件工具,它們通常提供了豐富的界面元素、易于使用的編程接口和
    的頭像 發表于 06-06 10:48 ?2758次閱讀
    百家乐官网注册18元体验金| 宝马会百家乐娱乐城| 百家乐官网技巧-百家乐官网开户指定代理网址 | 百家乐官网网哪一家做的最好呀| 郑州百家乐官网高手| 百家乐官网视频台球下载| 百家乐官网投注哪个信誉好| 百家乐官网l23| 百家乐官网解析| 百家乐官网平注法到6| 百家乐官网多少钱| 百家乐官网娱乐网开户| 戒掉百家乐官网的玩法技巧和规则| 真人版百家乐官网试玩| 网络百家乐的陷阱| 百家乐平的概率| 玩百家乐的玩法技巧和规则| 大发888娱乐城casino| 六合彩网址大全| 御匾会娱乐城| 百家乐官网规则好学吗| 百家乐官网顶尖高手| 百家乐连黑记录| 百家乐学院| 大发888娱乐场奖金| 乌海市| 皇冠足球开户| 百家乐官网游戏机博彩正网| 娱乐网百家乐官网的玩法技巧和规则| 百家乐投注网站是多少| 东莞百家乐的玩法技巧和规则| 世界顶级赌场酒店| 大名县| 百家乐官网澳门有网站吗| 百家乐官网赌博代理合作| 百家乐有多少网址| 犹太人百家乐的玩法技巧和规则 | 百家乐有好的投注法吗| 百家乐八卦投注法| 大发888娱乐场 b8| 稳赢的百家乐官网投注方法|