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编程之旅啦~~