https://m.toutiao.com/is/JGSHc2X/
博主是一名有幾年開發(fā)經(jīng)驗的Python社畜。網(wǎng)上關于pyQt5的資料實際上也不少,但大都是對某個具體問題的討論,比較零散。而我在寫代碼的過程中經(jīng)常遇到各種各樣的問題,這使得我經(jīng)常在數(shù)十個網(wǎng)站上查詢資料,很不友好。為此我決定寫這篇文章,詳細記錄一下從零到一的過程,也希望以此拋磚引玉,向大佬們學習
以下是demo演示
可以看到這個樸實無華的工具效果圖……
雖然很簡陋,但是我需要的基本功能還是實現(xiàn)了。demo的內(nèi)容大致包含:事件的觸發(fā)、文件讀取寫出、進度條異步線程和信號等等,作為第一個gui項目內(nèi)容應該足夠了,業(yè)務邏輯的代碼根據(jù)功能不同也可以隨意替換,算是邁出了第一步
這篇博客可能適合以下老哥閱讀:
有一些python基礎
會裝python環(huán)境和第三方庫安裝
基本沒使用過或者不太懂pyQt5開發(fā)
就像題目所說的那樣,這篇博客是類似于新手教程的東西,雖然寫的是從零開始,但是不打算過多介紹關于環(huán)境和軟件安裝的相關問題(這方面的教程確實太多了)。另外如果你已經(jīng)是python或pyqt的老手了,我不確定我寫的東西會不會對你有用,當然也歡迎留下意見
Python:Python 3.7.9 Anaconda 環(huán)境
windows 10
IDE: Pycharm
PyQT5 + QtDesigner
以管理員身份運行Anaconda Navigator,進入CMD Prompt
輸入下面的命令創(chuàng)建一個python3.7版本的虛擬環(huán)境,環(huán)境名為pygui。這里的pygui可以更改
conda create -n pygui python=3.71
出現(xiàn)如下界面輸入y繼續(xù)安裝,即可成功安裝
安裝完成后輸入下面的語句檢查環(huán)境是否安裝成功
conda env list1
如圖所示,名為pygui已經(jīng)成功安裝
輸入下面的語句激活pygui環(huán)境(可以理解為切換到pygui環(huán)境下)
activate pygui1
如圖所示,當前環(huán)境由base切換到pygui虛擬環(huán)境
至此,新建虛擬環(huán)境就算是成功了。這部分與博客內(nèi)容無關,因此不過多贅述
注:如果是非Anaconda環(huán)境把下文中出現(xiàn)的conda xxx命令替換為pip xxx
使用命令安裝PyQt5
pip install PyQt51
下圖為正在安裝的界面,如有Proceed輸入y。安裝的速度取決與網(wǎng)速和源,我用的清華源也超時了好幾次,多試幾次如果依然超時建議更換源或者設置超時時間
安裝完成后輸入下面的命令檢查包的安裝情況
conda list1
應該有下圖中的包
python 3.5以上版本安裝成功后還需安裝pyqt5-tools
pip install pyqt5-tools1
安裝成功后虛擬環(huán)境的庫如下圖所示(這里根據(jù)版本不同,包的數(shù)量和名稱可能會略有區(qū)別,只要安裝成功了一般不影響后面使用)
啟動Qtdesigner,直接輸入designer命令即可啟動Qt設計師
designer1
如下圖所示,如果無法啟動則說明安裝有問題。啟動成功后先不要關閉命令窗口,后面編譯ui文件還會用到
創(chuàng)建MainWinodw 界面基本結構如圖所示
在組件菜單里選擇Label拖動到畫布里
雙擊Label組件進入編輯模式
輸入文本信息按回車就編輯成功了
Ctrl + S重命名并保存到桌面
現(xiàn)在桌面上應該有一個.ui類型的文件了,下一步需要將ui文件編譯為py文件。
打開之前的命令窗口,使用cd命令切換到ui文件所在的目錄下,我這里是桌面
使用下面的命令編譯ui文件。注意這里export.ui是我剛才保存的ui文件,如果文件名不是export.ui需要自行替換,export.py是將要生成的py文件,建議設置為與ui文件相同的名稱
pyuic5 -o export.py export.ui1
執(zhí)行成功后當前目錄下應該有一個py文件了,如下圖所示
如果上面的步驟出現(xiàn)錯誤大概率是pyqt包安裝問題
1. 關于環(huán)境,使用不同的IDE則需要不同的步驟,只要能讓項目在新建的pygui環(huán)境下運行就行
2. pyqt的插件僅僅是方便在pycharm中使用pyqt的功能,使用命令也能達到相同的效果
啟動pycharm ——> New Project 操作步驟如下圖所示
在環(huán)境選擇界面選擇conda虛擬環(huán)境
創(chuàng)建
項目創(chuàng)建完畢后開始配置qt插件
點擊File ——> Setting
在彈出界面中選擇 Tools下的 External Tools 進行配置,如下圖所示
在彈出的界面中進行如下配置,此為Designer配置
配置如下
Name: QtDesignerGroup: QtProgram: xxxxx\xxxxxx\designer.exeWorking Directory: $ProjectFileDir$1234
這里重點說一下第三步
Program填寫designer.exe的絕對路徑,這里的路徑因人而異,如果跟我一樣是使用Anaconda創(chuàng)建的虛擬環(huán)境那么路徑應該跟下面這條路徑類似
C:\ProgramData\Anaconda3\Library\bin\designer.exe1
如果是使用系統(tǒng)的python環(huán)境那么應該類似于下面這條
C:\Users\xxxx\AppData\Local\Programs\Python\Python37\Lib\site-packages\pyqt5-tools\designer.exe1
配置完成后可在菜單欄 Tools ——> Qt ——> QtDesigner 打開designer,如果無法打開則說明配置有誤,如下
配置Pyuic,如法炮制
配置如下
Name: pyUICGroup: QtProgram: xxxxx\xxxxxx\pyuic5.exeArguments: $FileName$ -o $FileNameWithoutExtension$.pyWorking Directory: $FileDir$12345
同樣,這里的Program也需要根據(jù)自己的路徑修改,Anaconda環(huán)境類似于:
C:\ProgramData\Anaconda3\envs\pygui\Scripts\pyuic5.exe1
如果是使用系統(tǒng)的python環(huán)境那么應該類似于下面這條
C:\Users\xxxx\AppData\Local\Programs\Python\Python37\Scripts\pyuic5.exe1
配置完成后將之前我們生成的ui文件拷貝到項目中,選中ui文件,再使用菜單欄啟動pyuic5編譯ui文件,如下圖所示
注意:一定要選中了ui文件再運行PyUic
py文件已經(jīng)能夠編譯出來,接下來就是運行了。
打開我們剛剛編譯好的export.py會發(fā)現(xiàn)里面沒有程序入口的代碼,這是因為PyUic只會生成在designer中定義的東西,所以還需要加入程序入口的代碼。
這里我建議另起一個main.py作為程序入口和業(yè)務邏輯的實現(xiàn),這樣就可以實現(xiàn)UI和業(yè)務邏輯分離,否則一旦修改了UI重新生成就會將之前的py文件全部覆蓋,十分不友好
所以我們新建main.py 加入程序入口相關的代碼
我的main.py代碼如下
注意:xxxxx為剛才生成的py文件名稱,我這里是export,根據(jù)情況替換
import sysfrom PyQt5.QtWidgets import QApplication, QMainWindowimport xxxxxclass Example(QMainWindow): def __init__(self): self.app = QApplication(sys.argv) super().__init__() self.ui = xxxxx.Ui_MainWindow() self.ui.setupUi(self) # 初始化 self.init_ui() # ui初始化 def init_ui(self): # 初始化方法,這里可以寫按鈕綁定等的一些初始函數(shù) self.show()# 程序入口if __name__ == '__main__': e = Example() sys.exit(e.app.exec())
在這里我新建了Example類,借由操作Example來操作export里的Ui_MainWindow對象,這樣做的目的是將業(yè)務邏輯和函數(shù)綁定相關工作全部交給Example,將UI、程序入口、業(yè)務邏輯完全分離,方便拓展,這樣也符合OOP思想。
現(xiàn)在我們終于可以運行這個qt項目了,直接運行main.py文件應當能看到之前新建的ui界面,如圖所示
至此,需要的準備工作就結束了,下一篇開始寫詳細的工具制作流程