【1】一文讀懂PyQt簡介和環境搭建

目錄

1. PyQt簡介

1.1. Qt

1.2. PyQt

1.3. 關于PyQt和PySide

2. 通過pip安裝PyQt5

3. 無法運行處理

4. VSCode配置PYQT插件


PyQt官網:Riverbank Computing | Introduction

1. PyQt簡介

PyQt是一套Python的GUI開發框架,即圖形用戶界面開發框架。

Python中經常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg

其中PyQt是Qt(c++語言實現的)為Python專門提供的擴展。

1.1. Qt

Qt 是一個1991年由Qt Company開發的跨平臺C++圖形用戶界面開發框架。
2008年,Qt Company被諾基亞公司收購,Qt也因此成為諾基亞旗下的編程語言工具。
2012年,Qt被Digia收購。
2014年4月,跨平臺集成開發環境Qt Creator 3.1.0正式發布

1.2. PyQt

  • 基礎高性能的Qt的圖形界面控件集
  • 能夠跨平臺運行在windows、linux和macos等系統上
  • 使用信號/槽(signal/slot)機制進行通信(其它語言采用回調方式)
  • 對Qt庫的完全封裝

1.3. 關于PyQt和PySide

首先推薦的就是PyQt,PyQt是Qt的Python版本,而Qt是一種成熟的GUI開發框架,底層是由C++開發而成,采用PyQt開發GUI,后面可以進一步轉C++開發Qt,因此,如果想要入手圖形用戶界面開發,PyQt是非常推薦的一款框架,需要注意的是,PyQt有兩種許可協議,分別是GPLv3許可證和需要購買版權的商業許可證,GPLv3是強開源協議,意味著,如果你的應用程序里面使用了PyQt,那么你的程序必須開源,否則可能收到法院傳票,如果想要閉源商用,就必須購買Riverbank Computing公司的商業許可證。

但如果你既想享受Qt的強大功能,又想閉源商用,那么PySide適合你,說到PySide,就不得不說Qt與PyQt之間的恩怨,Qt的研發公司是Nokia,Riverbank Computing公司使用Python封裝了Qt研發出PyQt,而PyQt從誕生時就是GPLv3協議,因此Nokia與Riverbank Computing談判,希望將PyQt的協議修改為LGPLv3,可以帶來更多的商業用戶,但是兩個公司談崩了,所以Nokia自己重新研發了Py版本的Qt也就是PySide,后來Nokia將Qt和PySide賣給了Digia公司。

PySide官網:Qt for Python

總結:

  • 如果不做商業項目,強烈建議使用PyQt,資料多,穩定。全局替換成PySide也很方便。
  • 需要開發閉源商用軟件的就用PySide。所有API用起來幾乎一樣。
  • PyQt5的對應版本是PySide2

2. 通過pip安裝PyQt5

  • pip install PyQt5 安裝PyQt5
  • pip install PyQt5-tools 安裝Qt工具軟件
  • pip install PyQt5-stubs 安裝PyQt5語法檢測包(可選)

安裝完成之后可以在Python的安裝目錄/Lib/site-packages中找到PyQt5目錄。

路徑示例:%LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages

如果安裝緩慢,請配置pip源:

pip包管理工具-CSDN博客文章瀏覽閱讀322次,點贊4次,收藏7次。pip 是 Python 包管理工具,該工具提供了對Python包的查找、下載、安裝、卸載的功能。Python 2.7.9+ 或 Python 3.4+ 以上版本的python都自帶 pip 工具。https://blog.csdn.net/bug_love/article/details/134748875?spm=1001.2014.3001.5502

3. 無法運行處理

如果運行PyQt程序報如下錯誤,不報錯不需要配置!:

則將如下變量添加到系統環境中:

QT_QPA_PLATFORM_PLUGIN_PATH

值為:

%LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages\PyQt5\Qt5\plugins\platforms

重啟編輯器或控制臺即可

注意這里的%LOCALAPPDATA%\Programs\Python\Python39是你的Python安裝路徑,如果安裝時不是默認路徑,請將此部分內容替換成自己的安裝路徑。

建議直接使用Everything搜索qoffscreen.dll,找到目錄。

4. VSCode配置PYQT插件

安裝PYQT Integration插件,可以幫我們自動生成UI相關代碼和資源。最好進行如下配置:

  1. 配置.ui生成的.py文件中導入資源的路徑:--import-from=ui 指向ui目錄
  2. 配置designer.exe可執行程序的路徑,例如我的路徑:D:\Programs\Python\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
  3. 在Python安裝路徑下找designer.exe,建議用everything搜索designer.exe。如果搜不到,請先確保已安裝PyQt5-tools, 安裝方法:pip install PyQt5-tools

其他不用變

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

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

相關文章

FreeRTOS的內存管理方法(超詳細)

內存管理 我們知道每次創建任務、隊列、互斥鎖、軟件定時器、信號量或事件組時,RTOS 內核都需要 RAM , RAM 可以從 RTOS API 對象創建函數內的 RTOS 堆自動動態分配, 或者由應用程序編寫者提供。 如果 RTOS 對象是動態創建的,那么…

Leetcode—2646.最小化旅行的價格總和【困難】

2023每日刷題&#xff08;五十三&#xff09; Leetcode—2646.最小化旅行的價格總和 算法思想 看靈神的 實現代碼 class Solution { public:int minimumTotalPrice(int n, vector<vector<int>>& edges, vector<int>& price, vector<vector&l…

發現數學之美--微積分的起源和用途(一文搞懂微積分)

數學&#xff0c;改變世界的基石。微積分十九世紀的三大自然發現之一&#xff0c;迪卡爾建立了解析幾何&#xff0c;把數與圖結合在一起&#xff0c;微積分的發現與創立&#xff0c;是數學新的里程碑&#xff0c;解決了常規方法無法解決的問題&#xff0c;是一次偉大的革命。迪…

服務器數據損壞了有辦法修復嗎 ?

對于企業網站來說&#xff0c;數據庫往往是服務器中最核心的部分&#xff0c;所以一旦數據庫發生損壞&#xff0c;將會給企業帶來巨大的損失&#xff0c;因 此數據庫的數據恢復功能變得越來越重要了。在服務器運行過程中&#xff0c;由于斷電、操作不當或者是客觀原因損壞到服務…

git安裝和配置

git安裝和配置 一、軟件介紹 Git是一個免費開源的分布式版本控制系統&#xff0c;旨在快速高效地處理從小型到大型項目的所有內容。 Git易于學習&#xff0c;占地面積小&#xff0c;性能閃電般快。它以廉價的本地分支、方便的暫存區域和多個工作流等功能勝過了Subversion、C…

linux 常用指令目錄大綱

Linux下的Signal信號處理及詳解&#xff0c;test ok-CSDN博客 Linux下怎樣判斷一個binary是否可以debug//test ok_感知算法工程師的博客-CSDN博客 linux file命令的用法//test ok-CSDN博客 linux下生成core dump方法與gdb解析core dump文件//test ok-CSDN博客 linux readel…

【論文閱讀】Reachability and distance queries via 2-hop labels

Cohen E, Halperin E, Kaplan H, et al. Reachability and distance queries via 2-hop labels[J]. SIAM Journal on Computing, 2003, 32(5): 1338-1355. Abstract 圖中的可達性和距離查詢是許多應用的基礎&#xff0c;從地理導航系統到互聯網路由。其中一些應用程序涉及到巨…

第7節:Vue3 動態綁定多個屬性

可以使用v-bind指令將多個屬性動態綁定到元素上。以下是一個簡單的實例&#xff1a; <template><view class"container"><text v-bind"dynamicProps">{{ message }}</text><button click"toggleActive">切換激活…

金南瓜SECS/GEM C# SDK 快速使用指南

本文對如何使用金南瓜SECS/GEM C# SDK 快速創建一個滿足SECS/GEM通信要求的應用程序&#xff0c;只需簡單3步完成。 第一步&#xff1a;創建C# .NET程序 示例使用Visual Studio 2010&#xff0c;使用者可以選擇更高級版本 Visual Studio 第二步&#xff1a;添加DLL庫引用&am…

圖論-并查集

并查集(Union-find Sets)是一種非常精巧而實用的數據結構,它主要用于處理一些不相交集合的合并問題.一些常見的用途有求連通子圖,求最小生成樹Kruskal算法和最近公共祖先(LCA)等. 并查集的基本操作主要有: .1.初始化 2.查詢find 3.合并union 一般我們都會采用路徑壓縮 這樣…

git標簽的管理與思考

git 標簽管理 git 如何打標簽呢&#xff1f; 標簽是什么? 標簽 相當于一個 版本管理的一個貼紙&#xff0c;隨時 可以通過標簽 切換到 這個版本的狀態 &#xff0c; 有人可能有疑問 git commit 就可以知道 代碼的改動了&#xff0c; 為啥還需要標簽來管理呢&#xff1f; …

從二分類到多分類:探索Logistic回歸到Softmax回歸的演進

隨著機器學習和深度學習的迅猛發展&#xff0c;我們需要越來越靈活和強大的模型來解決各種不同的問題。在分類問題中&#xff0c;Logistic回歸一直是一個常見而有效的工具&#xff0c;尤其是在二分類場景中。然而&#xff0c;隨著問題變得更加復雜&#xff0c;我們需要更先進的…

node筆記

文章目錄 一、Node.js基礎1. 認識Node.js01 nodejs的特性02 使用 Node.js 需要了解多少 JavaScript03 瀏覽器環境vs node環境 2. 開發環境搭建3. 模塊、包、commonJS02 CommonJS規范03 modules模塊化規范寫法 4. Npm&Yarn01 npm的使用02 全局安裝 nrm03 yarn使用 5. 內置模…

在idea中使用maven創建dynamic web project

1、先創建一個empty project 2、添加一個module , 核心是選擇maven archetype webapp, 這個是maven提供的創建web工程的模版。 3、添加完等自動安裝好即可 4、目錄可能不完整 右鍵src---->點擊New---->點擊Directory &#xff08;注意&#xff1a;這是筆者所缺失的結…

每日一道c語言

任務描述 題目描述:輸入10個互不相同的整數并保存在數組中&#xff0c;找到該最大元素并刪除它&#xff0c;輸出刪除后的數組 相關知識&#xff08;略&#xff09; 編程要求 請仔細閱讀右側代碼&#xff0c;結合相關知識&#xff0c;在Begin-End區域內進行代碼補充&#xf…

ooTD I 女兒是自己的,盡情打扮盡情可愛

分享女寶的時尚穿搭 奶乎乎的黃色也太好看了 超足充絨量&#xff0b;優質面料 柔軟蓬松上身體驗感超贊 怎么穿都好看系列 輕輕松松打造時尚造型&#xff01;&#xff01;

Linux 刪除文件名亂碼的文件

現象&#xff1a; 處理&#xff1a; 1.>ls -li 獲取文件對應的ID號 2.把刪除指定文件&#xff08;ID號 &#xff09;執行&#xff1a; find ./ -inum 268648910 -exec rm {} \;

詳解Keras3.0 Models API: Whole model saving loading

1、save方法 Model.save(filepath, overwriteTrue, **kwargs) 將模型另存為.keras文件 參數說明 filepath: 保存模型的路徑。必須以.keras結尾overwrite&#xff1a;布爾值&#xff0c;表示是否覆蓋已存在的文件。默認為 True&#xff0c;即覆蓋已存在的文件。save_format…

微信小程序_介紹

開發準備 注冊微信小程序 進入微信公眾平臺 點擊立即注冊&#xff0c;選擇小程序&#xff0c;前往注冊 完善個人/企業信息 獲取AppID 進入小程序頁面->開發->開發設置->AppID 下載微信開發者工具 微信官方下載下載微信開發者工具穩定版 創建項目 綁定AppID不使用…

用Rust刷LeetCode之27 移除元素

27. 移除元素 難度: 簡單 原描述: 新描述: func removeElement(nums []int, val int) int { for i : 0; i < len(nums); i { if nums[i] val { nums append(nums[:i], nums[i1:]...) i-- } } return len(nums)} Rust 版本 下面這種寫法編譯無法通過: pub fn remove_…