PyQt5工具可以快速實現簡單的界面開發,包括界面設計、佈局管理以及業務邏輯實現。我們可以使用PyQt5工具可以快速畫一個控件擺放整齊、界面整潔有序、佈局合理的界面。 Eric6是一個全功能的python編輯器和IDE,與PyQt5結合滿足了用python快速對GUI開發的需求。
文章目錄
1. 基礎環境
- Windows10 x64
- Anaconda3 安裝完成
- PyCharm安裝並配置好Anaconda環境
本人使用的版本號如下:
名稱 | 版本號 | 鏈接 |
---|---|---|
Anaconda3 | 2020.02 | https://www.anaconda.com/distribution/ |
PyQt5 | 5.11.3 | https://pypi.org/project/PyQt5/#files |
PyQt5_tools | 5.11.3.1.4 | https://pypi.org/project/pyqt5-tools/ |
QScintilla | 2.10.8 | https://pypi.org/project/QScintilla/ |
Eric6 | 20.3 | https://sourceforge.net/projects/eric-ide/files/eric6/stable/ |
PyCharm | 2019.3 | https://www.jetbrains.com/pycharm/download/ |
注:不建議安裝最新版本,最新版本中一些需要的必要庫文件可能會出現問題(血淚教訓)。
2. PyQt5安裝
2.1 PyQt5安裝
-
打開Anaconda Prompt,進入Anaconda安裝目錄,輸入以下命令:
#請更換自己的PyQt5的whl文件目錄 pip install E:\Softwares\Programming\Python\GUI\PyQt5-5.11.3-5.11.2-cp35.cp36.cp37.cp38-none-win_amd64.whl
-
執行成功界面如下:
2.2 PyQt5_tools安裝
-
在上述路徑中,執行以下命令:
#請更換自己的PyQt5_tools的whl文件目錄 pip install E:\Softwares\Programming\Python\GUI\pyqt5_tools-5.11.3.1.4-cp37-none-win_amd64.whl
-
安裝成功界面如下:
2.3 QScintilla安裝
-
在上述路徑中,執行以下命令:
#請更換自己的QScintilla的whl文件目錄 pip install E:\Softwares\Programming\Python\GUI\QScintilla-2.10.8-1-cp35.cp36.cp37.cp38-none-win_amd64.whl #或者通過豆瓣鏡像源 pip install QScintilla==2.10.8 -i https://pypi.douban.com/simple
-
執行成功界面:
3. Eric 6 安裝配置
3.1 下載解壓
-
下載地址: https://sourceforge.net/projects/eric-ide/files/eric6/stable/
-
選擇自己需要的版本進行下載(推薦用迅雷工具下載)
-
將下載好的eric6-20.3.zip文件解壓到
D:\ProgramData\Anaconda3\Lib\site-packages
目錄下,如圖:
3.2 安裝
-
進入
D:\ProgramData\Anaconda3\Lib\site-packages
目錄下,執行以下命令:#先安裝PyQtChart,否則自動安裝的PyQtChart會將安裝陷入死循環 pip install PyQtChart==5.11.3 -i https://pypi.douban.com/simple python install.py install
-
執行成功界面如下:
-
若出現以下問題:
Traceback (most recent call last): File "install.py", line 1922, in <module> main(sys.argv) File "install.py", line 1811, in main doDependancyChecks() File "install.py", line 1363, in doDependancyChecks from PyQt5 import QtWebEngineWidgets # __IGNORE_WARNING__ ValueError: PyCapsule_GetPointer called with incorrect name
-
可以通過安裝sip的方式解決:
pip install E:\Softwares\Programming\Python\GUI\sip-5.1.1-cp37-cp37m-win_amd64.whl
-
解決成功界面:
3.3 配置
-
安裝完成後,桌面會出現以下兩個圖標
-
點擊第一個圖標,啓動後的界面:
-
點擊 “Setting”->“Preferences”->“Qt”,進入首選項對話框,配置如圖:
-
點擊 “Editor”->“AutoCompetition”,配置如下圖所示:
-
點擊 “Editor”->“AutoCompetition”->“QScintilla”,配置如下圖所示:
-
點擊“Editor”->“API”,配置如下圖所示,之後再點擊“Compile APIs”
-
還要選擇PyQt5 的API,更改Type爲 PyQt5 GUI ,從已安裝的API中添加PyQt5.API,參考上一步。
-
點擊"Python",選擇編碼格式
-
點擊 “Project”->“Multiproject”,選擇工作區
3.4 測試
-
新建
XX.py
文件,輸入以下代碼測試,出現界面則說明安裝成功 -
import sys from PyQt5 import QtWidgets app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QWidget() widget.resize(360,360) widget.setWindowTitle("Hello,PyQt5") widget.show() sys.exit(app.exec())
-
運行效果如圖(運行快捷鍵:F2):
至此,我們可以用Eric6進行Python GUI界面編程了~。
有的用戶習慣用PyCharm編寫Python,可以參考第四步配置。
注:在Eric6配置完成後,也可以用Sublime Text3打開Python文件進行編輯運行。
4. PyCharm相關配置
PyCharm安裝過程可以自行在網上查閱。
4.1 配置Qt Designer
-
在
File—>Settings—>Tools—>External Tools
中點擊“+”號,添加外部工具。#工具名稱,用於菜單顯示 Name = MyQtDesigner #工具作用描述 Description = Qt tool for designing and building GUIs with Qt Widgets #可通過瀏覽模塊安裝路徑下的designer.exe程序 Program = D:\ProgramData\Anaconda3\Library\bin\designer.exe #默認爲空即可 Arguments = #通過點擊右側 Insert Macro 來選擇要插入的宏,$FileDir$ 表示文件當前所在目錄 Working directory = $FileDir$ #其他配置保持默認即可。
如圖所示:
4.2 配置PyUIC
-
創建一個外部工具 PyUIC,用於將 Qt 的UI界面設計文件 ui 文件 轉換成 py代碼,配置如下:
#工具名稱,用於菜單顯示 Name = PyUIC #工具作用描述 Description = Python User Interface Compiler for Qt #可通過瀏覽Python安裝路徑下的python.exe程序 Program = D:\ProgramData\Anaconda3\python.exe #調用 PyQt5.uic.pyuic 來執行轉換操作 Arguments = -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py #通過點擊右側 Insert Macro 來選擇要插入的宏,$FileDir$ 表示文件當前所在目錄 Working directory = $FileDir$ #其他配置保持默認即可。
如圖所示:
4.3 測試
-
測試MyQtDesigner和PyUIC配置是否成功。打開路徑
Tools -> External Tools ->Qt Designer/PyUIC
-
點擊Qt Designer出現程序主界面,默認狀態下點擊Create,保存文件名爲 test,默認後綴就是ui。
-
創建一個簡單的界面後保存文件爲test.ui。
-
選中test.ui,依次打開
Tools -> External Tools ->PyUIC
,將test.ui文件轉換爲test.py文件,方便PyCharm查閱編輯。
-
但是此時的文件是不能運行的,還需要在其前後添加相應的模塊:
-
#添加段代碼 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog ---------------------------------------------------------------- #爲生成的代碼段 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(417, 538) self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) self.buttonBox.setGeometry(QtCore.QRect(20, 230, 341, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.retranslateUi(Dialog) self.buttonBox.accepted.connect(Dialog.accept) self.buttonBox.rejected.connect(Dialog.reject) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) ---------------------------------------------------------------- #添加段代碼 if __name__ == '__main__': app = QApplication(sys.argv) MainWindow = QDialog() ui = Ui_Dialog() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
此時,運行test.py文件,如果出現Qt Designer中創建的文件了,則說明實現了.ui 文件和.py 文件的相互轉換。
至此,可以開啓你的Python GUI編程之旅啦~~