【PyQt5】PyQt5初探 - 一個簡單的例程

PyQt5初探 - 一個簡單的例程

  • 引言
  • 一、安裝配置
  • 二、使用
    • 2.1 PyQt5簡單例程
    • 2.2 與c++ Qt深入對比
  • 三、相關教程

引言

PyQt5是一個比較流行的Python圖形用戶界面(GUI)庫,它基于Qt庫(一個跨平臺的C++庫,用于開發應用程序的圖形界面)為Python開發者提供了一個強大的工具,用于創建專業的GUI應用程序,而無需深入了解底層的C++編程。

  • 其與Qt (c++)相比,主要的優缺點如下:
    PyQt5優點:較高的開發效率和易用性,語法相對簡單,python有意思的第三方庫很多,可直接拿來用
    PyQt5缺點:較低的運行效率,特別是進行打包封裝成可執行文件,體積很難縮小,進一步降低了運行效率
    感覺也是python相比c++的優缺點…

一、安裝配置

網上教程很多,可參考如下博文:

python pyqt5+vtk安裝以及配置采坑記錄:https://blog.csdn.net/qq_38204686/article/details/123445607
PyQt5實現多文件調用以及UI和邏輯分離:https://zhuanlan.zhihu.com/p/95082345

二、使用

在這里插入圖片描述

  • 程序運行如上圖所示,源碼如下所示:

2.1 PyQt5簡單例程

    1. 本例程代碼結構如下所示,其中main.py存放主函數,也是程序入口;main.py會調用MainWindow.py,里面存放主窗體相關函數;MainWindow.py會調用ui_MainWindow.py,里面是主窗體的界面設計;而ui_MainWindow.py是由designer.exe設計的MainWindow.ui使用pyuic5.exe生成的。(類似QtCreator的界面和邏輯分離)
      在這里插入圖片描述
    1. main.py,創建一個主窗體并顯示
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from MainWindow import MainWindow
import sysif __name__ == '__main__':app = QApplication(sys.argv)mainWindow = MainWindow()mainWindow.show()sys.exit(app.exec_())
    1. MainWindow.py,界面初始化,設置主窗體標題為"Title"
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from ui_MainWindow import Ui_MainWindow
import osclass MainWindow(QMainWindow):ui = Nonedef __init__(self, parent=None):super(MainWindow, self).__init__(parent)# 0. 界面初始化self.ui = Ui_MainWindow()self.ui.setupUi(self)self.setWindowTitle("Title")
    1. ui_MainWindow.py,由MainWindow.ui生成的py文件,供其他py調用,其在Qt designer中的顯示和內容如下:
      在這里插入圖片描述
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>799</width><height>620</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><layout class="QGridLayout" name="gridLayout_2"><item row="0" column="0"><widget class="QLabel" name="label"><property name="text"><string>我是個標題</string></property><property name="alignment"><set>Qt::AlignCenter</set></property></widget></item></layout></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>799</width><height>26</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>

2.2 與c++ Qt深入對比

本文python使用的PyQt仿照了c++ Qt的結構,但還是略有不同:

    1. 文件結構
      在這里插入圖片描述
      兩者類似,都有main作為程序入口,只不過python沒有.h和.cpp之分,c++還多了pro文件配置編譯參數。兩者的.ui文件一致,python的需要轉為.py文件被調用,而c++的會自動生成ui_mainwindow.h被.cpp文件調用,如下圖所示 (Qt creator會自動生成,VS好像還需要配置),保持之前使用c++ Qt的習慣,我將python下.ui文件轉成的.py文件之前也增加了ui_
      在這里插入圖片描述
    1. ui_mainwindow.hui_MainWindow.py
      在這里插入圖片描述在這里插入圖片描述
      setupUI函數一致,都要傳遞一個QMainWindow,然后對其進行修改。c++ Qt調用時候默認是給.h添加一個界面私有變量,然后.cpp調用其setupUI函數,傳入類本身 (this指針)進行界面繪制。python也是類似的用法,看到有一篇博客沒有new 一個Ui_MainWindow,而是直接繼承Ui_MainWindow,都能調用其setupUI函數。
      在這里插入圖片描述
      了解其UI文件生成以及調用的邏輯,自己直接在.py文件里寫代碼亦可。相比c++會靈活一些,畢竟沒有私有變量。

三、相關教程

The complete PyQt5 tutorial — Create GUI applications with Python: https://www.pythonguis.com/pyqt5-tutorial/
PyQt5文檔: https://www.riverbankcomputing.com/static/Docs/PyQt5/index.html#

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82141.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82141.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82141.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖文詳解Java并發面試題

文章目錄 1、并發與并行2、線程安全3、線程、進程、協程4、線程間通信5、線程創建方式6、8G內存創建的線程數7、普通Java程序含有的線程8、start()、run()9、線程調度、6種狀態、強制停止線程、上下文切換10、守護線程、用戶線程11、 volatile 、synchronized12、sleep() 、 wa…

飛牛fnNAS存儲空間模式詳解

目錄 一、NAS的存儲空間 二、多硬盤對NAS速度的提升原理 三、多硬盤對數據安全的提升原理 四、多硬盤對容量的提升原理 五、磁盤陣列模式 六、飛牛NAS支持的存儲模式 七、具體如何選擇存儲空間模式 在數字化時代,數據是個人和企業發展的核心資產,但面臨硬盤損壞、病毒…

OpenCv高階(二十)——dlib臉部輪廓繪制

文章目錄 一、人臉面部輪廓繪制代碼實現1、定義繪制直線段的函數2、定義繪制凸包輪廓的函數3、讀取輸入圖像4、初始化dlib的人臉檢測器5、使用檢測器在圖像中檢測人臉&#xff08;參數0表示不進行圖像縮放&#xff09;6、加載dlib的68點人臉關鍵點預測模型7、遍歷檢測到的每個人…

WEBSTORM前端 —— 第3章:移動 Web —— 第3節:移動適配

目錄 一、移動Web基礎 1.谷歌模擬器 2.屏幕分辨率 3.視口 4.二倍圖 二、適配方案 三、rem 適配方案 四、less 1.less – 簡介 2.less – 注釋 3.less – 運算 4.less – 嵌套 5.less – 變量 6.less – 導入 7.less – 導出 8.less – 禁止導出 五…

Altium Disigner(16.1)學習-原理圖繪制以及必要操作

一、下載軟件 通過網盤分享的文件&#xff1a;Altium Designer 16.zip 鏈接: https://pan.baidu.com/s/1uBHeoJJ-iA2tXw3NRjCcdA?pwd7c3h 提取碼: 7c3h 復制這段內容后打開百度網盤手機App&#xff0c;操作更方便哦 --來自百度網盤超級會員v5的分享 二、建立工程 添加proje…

AI煉丹日志-25 - OpenAI 開源的編碼助手 Codex 上手指南

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; Java篇&#xff1a; MyBatis 更新完畢目前開始更新 Spring&#xff0c;一起深入淺出&#xff01; 大數據篇 300&#xff1a; Hadoop&…

Redis:安裝與常用命令

&#x1f308; 個人主頁&#xff1a;Zfox_ &#x1f525; 系列專欄&#xff1a;Redis &#x1f525; 安裝 Redis 使?apt安裝 apt install redis -y?持遠程連接 修改 /etc/redis/redis.conf 修改 bind 127.0.0.1 為 bind 0.0.0.0 修改 protected-mode yes 為 protected-mo…

02 APP 自動化-Appium 運行原理詳解

環境搭建見 01 APP 自動化-環境搭建 文章目錄 一、Appium及Appium自動化測試原理二、Appium 自動化配置項三、常見 ADB 命令四、第一個 app 自動化腳本 一、Appium及Appium自動化測試原理 Appium 跨平臺、開源的 app 自動化測試框架&#xff0c;用來測試 app 應用程序&#x…

UDP/TCP協議全解

目錄 一. UDP協議 1.UDP協議概念 2.UDP數據報格式 3.UDP協議差錯控制 二. TCP協議 1.TCP協議概念 2.三次握手與四次揮手 3.TCP報文段格式&#xff08;重點&#xff09; 4.流量控制 5.擁塞控制 一. UDP協議 1.UDP協議概念 當應用層的進程1要向進程2傳輸報文&#xff…

AWS之數據分析

目錄 數據分析產品對比 1. Amazon Athena 3. AWS Lake Formation 4. AWS Glue 5. Amazon OpenSearch Service 6. Amazon Kinesis Data Analytics 7. Amazon Redshift 8.Amazon Redshift Spectrum 搜索服務對比 核心功能與定位對比 適用場景 關鍵差異總結 注意事項 …

第13講、Odoo 18 配置文件(odoo.conf)詳細解讀

1. 概述 Odoo 配置文件&#xff08;odoo.conf&#xff09;是管理 Odoo 服務器行為的核心工具&#xff0c;涵蓋了網絡、安全、數據庫、性能等多方面的關鍵參數。本文檔系統梳理 Odoo 18 配置文件的主要參數&#xff0c;結合實際應用場景&#xff0c;提供權威的配置建議與最佳實…

Python詳細實現Dash儀表盤:從零構建數據可視化界面

目錄 Python詳細實現Dash儀表盤&#xff1a;從零構建數據可視化界面一、引言&#xff1a;為什么選擇 Dash&#xff1f;二、Dash 的核心組成與工作流程三、項目目標使用數據&#xff1a; 四、數學模型與聚合公式五、儀表盤結構設計頁面設計結構如下&#xff1a; 六、完整代碼實現…

ubuntu磁盤掛載

在 Ubuntu 系統中&#xff0c;掛載額外的磁盤或分區是一項常見操作&#xff0c;無論是為了擴展存儲空間還是組織數據。本文將詳細介紹如何使用mount命令掛載文件系統&#xff0c;并處理可能遇到的問題。 1、掛載文件系統的基本步驟 1.1、 查找磁盤設備名稱 首先需要確定要掛載…

[9-2] USART串口外設 江協科技學習筆記(9個知識點)

1 2 3 智能卡、IrDA和LIN是三種不同的通信技術&#xff0c;它們在電子和汽車領域中有著廣泛的應用&#xff1a; ? 智能卡&#xff08;Smart Card&#xff09;&#xff1a; ? 是什么&#xff1a;智能卡是一種帶有嵌入式微處理器和存儲器的塑料卡片&#xff0c;可以存儲和處理數…

【js逆向_AES】全國二手房指數數據爬取

目標&#xff1a;請求參數signcode&#xff0c;請求結果data。 網址&#xff1a;aHR0cDovL3d3dy5jY2hpbmRleC5jb20vSG9tZS9pbmRleA 查看載荷 查看響應數據 點擊xhr&#xff0c;發現所有請求參數都是一個signCode&#xff0c;還是加密后的結果&#xff0c;對應結果中數據data也…

模塊化設計,static和extern(面試題常見)

文章目錄 一、函數的聲明和定義1.1 單個文件1.2 多個文件1.3 static和extern1.3.1 static修飾局部變量1.3.2 static修飾全局變量1.3.3 static修飾函數 總結 一、函數的聲明和定義 1.1 單個文件 一般我們在使用函數的時候&#xff0c;直接將函數寫出來就使用了 題目:寫一個函數…

PySide6 GUI 學習筆記——常用類及控件使用方法(地址類QUrl)

文章目錄 地址類QUrl主要功能URL 格式介紹常見 scheme&#xff08;協議&#xff09;類型QUrl 類常用方法常用方法示例典型應用場景 地址類QUrl QUrl 是 PySide6.QtCore 模塊中的一個類&#xff0c;用于處理和操作 URL&#xff08;統一資源定位符&#xff09;。它可以解析、構建…

GEE:獲取研究區的DEM數據

最近有粉絲追更 GEE 系列,說上次看完 DEM 代碼解析后,自己試著改了一版。今天咱們就來拆解他的優化版代碼 ——基于 SRTM 數據獲取研究區 DEM 并導出,順便聊聊怎么把 GEE 代碼寫得更專業! 先下結論:代碼邏輯完整,3 處細節值得新手抄作業! 這版代碼在數據加載→裁剪→可…

汽車安全 2030 預測 (功能安全FuSa、預期功能安全SOTIF、網絡安全CyberSecurity):成本、效益與行業影響

汽車安全 2030 預測 (功能安全FuSa、預期功能安全SOTIF、網絡安全CyberSecurity)&#xff1a;成本、效益與行業影響 到 2030 年&#xff0c;汽車行業將迎來一場安全技術的深度變革&#xff0c;其中 “三重安全防護”&#xff08;功能安全 FuSa、預期功能安全 SOTIF、網絡安全&…

深入理解設計模式之狀態模式

深入理解設計模式之&#xff1a;狀態模式&#xff08;State Pattern&#xff09; 一、什么是狀態模式&#xff1f; 狀態模式&#xff08;State Pattern&#xff09;是一種行為型設計模式。它允許一個對象在其內部狀態發生改變時&#xff0c;改變其行為&#xff08;即表現出不…