在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

    關注

    37

    文章

    3283

    瀏覽量

    57759
  • 可視化
    +關注

    關注

    1

    文章

    1198

    瀏覽量

    20975
  • GUI
    GUI
    +關注

    關注

    3

    文章

    662

    瀏覽量

    39763
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84821
收藏 人收藏

    評論

    相關推薦

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

    GUI Guider是NXP推出的一款功能強大且對用戶非常友好的圖形界面開發工具。目前最新版本是1.6.1。
    的頭像 發表于 12-20 09:49 ?1.9w次閱讀
    圖形<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 ?527次閱讀
    【產品應用】用 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 ?728次閱讀
    用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 ?684次閱讀
    【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 ?764次閱讀
    【產品應用】用 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 ?765次閱讀
    【產品應用】用 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 ?865次閱讀
    【產品應用】用 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 ?645次閱讀
    【產品應用】用 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 ?3848次閱讀
    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 ?886次閱讀

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

    上位機可視化界面編程軟件是一類用于開發圖形用戶界面(GUI)的軟件工具,它們通常提供了豐富的界面元素、易于使用的編程接口和
    的頭像 發表于 06-06 10:48 ?2616次閱讀
    主站蜘蛛池模板: 午夜精品久久久久蜜桃| 亚洲1314| 亚洲福利秒拍一区二区| 给我免费播放片黄色| 亚洲三级在线免费观看| 69pao强力打造免费高清| 狠狠五月天小说| 性夜黄a爽爽免费视频国产| 国产免费一区二区三区在线| 日本黄色片在线播放| 四虎影在永久地址在线观看| 尤物啪啪| 中文字幕色| 日本不卡视频在线播放| 欧美在线黄色| 1024免费看片| www.久久在线| 免费福利影院| 日本高清一本视频| 丝袜美女被| 色极影院| 屁屁影院在线| 免费aa| 日本妞xxxxxxxxx69| 欧美成人区| 国产69久久精品成人看| 中国业余老太性视频| 五月情婷婷| 日日摸人人拍人人澡| 三级欧美视频| 国产综合久久久久影院 | 孩交啪啪网址| 免费看美女午夜大片| 伊人色强在线网| www.一区二区三区.com| 亚洲国产精品综合久久久| 妖精视频一区二区三区| 亚洲成人免费看| 六月天丁香婷婷| 国产卡一卡2卡三卡免费视频| 9色网站|