python-pyqt5使用
开发桌面小应用, ui 可视化编辑 + 脚本逻辑 无疑爽的一批.
前篇
- Python GUI:PyQt安装及使用 - https://zhuanlan.zhihu.com/p/34290435
- 如今 Windows 软件开发究竟该用什么库 - https://www.zhihu.com/question/24461881/answer/140104855
安装
- 安装 - pyqt5和- pyqt5-tools这两个库- 1 
 2- $ pip3 install pyqt5 
 $ pip3 install pyqt5-tools
- 安装完后, 在 python 安装目录下可以找到可执行程序 Lib\site-packages\pyqt5_tools\Qt\bin\designer.exe, 但是点击打开会弹窗错误: - this application failed to start..., 原因是找不到相关 windows 库.- 解决办法: 将 - Lib\site-packages\PyQt5\Qt\plugins的- platforms目录拷贝到- Lib\site-packages\pyqt5_tools\Qt\bin下覆盖. 然后就可以打开 designer.exe. (参考: https://stackoverflow.com/questions/61324972/pyqt5-designer-is-not-working-this-application-failed-to-start-because-no-qt-pl) 
pycharm 配置
参考: https://blog.csdn.net/mawei7510/article/details/81450032
配置快捷打开 designer.exe 和 生成 xxx.ui 对应的 py 工具

- 添加 designer.exe  
- 添加 - xxx.ui对应的 py 工具 - workding directory: 是指执行命令的地方, 这里我指定到一个 generate 目录 
- 测试一下  - 最终执行的命令: - D:\Python38-32\Scripts\pyuic5.exe -o test.py F:\a_link_workspace\python\pyqt5-gui\ui\test.ui
 
hello world 初探
- 使用默认的模板, 导出为布局文件 test.ui  
- 生成对应的 python 代码.  - 代码: - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22- # -*- coding: utf-8 -*- 
 from PyQt5 import QtCore, QtGui, QtWidgets
 class Ui_Dialog(object):
 def setupUi(self, Dialog):
 Dialog.setObjectName("Dialog")
 Dialog.resize(400, 300)
 self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
 self.buttonBox.setGeometry(QtCore.QRect(290, 20, 81, 71))
 self.buttonBox.setOrientation(QtCore.Qt.Vertical)
 self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogButtonBox.Ok)
 self.buttonBox.setObjectName("buttonBox")
 self.retranslateUi(Dialog)
 self.buttonBox.accepted.connect(Dialog.accept) # Dialog.accept 就是按钮 ok 绑定的方法, 要自己实现
 self.buttonBox.rejected.connect(Dialog.reject) # Dialog.reject 就是按钮 cancel 绑定的方法, 要自己实现
 QtCore.QMetaObject.connectSlotsByName(Dialog)
 def retranslateUi(self, Dialog):
 _translate = QtCore.QCoreApplication.translate
 Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
- 编写入口 main.py - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31- # -*- coding: utf-8 -*- 
 import os
 import sys
 from PyQt5 import QtCore, QtGui, QtWidgets
 from generate import test
 # 自定义逻辑, 继承 QtWidgets.QWidget
 class CLogin(QtWidgets.QWidget):
 def __init__(self):
 QtWidgets.QWidget.__init__(self)
 # ok 按钮
 def accept(self):
 print("--- hello accept")
 # cancel 按钮
 def reject(self):
 print("--- hello reject")
 if __name__ == "__main__":
 import sys
 app = QtWidgets.QApplication(sys.argv)
 widget = CLogin() # 实例化 自定义逻辑
 ui = test.Ui_Dialog()
 ui.setupUi(widget)
 widget.show()
 sys.exit(app.exec_())- 执行 main.py - 1 - $ python3 main.py 