环境需求
可以创建一个新的虚拟环境(Python3.7) , requirements.txt 包含以下内容 :
PyQt5
pyqt5-tools
pyinstaller使用命令pip install -r requirements.txt 安装环境依赖
UI布局
from PyQt5.QtCore import QStringListModel, QTimer
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *
import json
class Example(QWidget):
def __init__(self):
super().__init__()
self.Init_UI()
def Init_UI(self):
self.setGeometry(300,300,1280,720)
self.setWindowTitle('小工具测试')
self.setWindowIcon(QIcon('assets/icon.png'))
vbox = QVBoxLayout()
vbox.addLayout(...)
vbox.addWidget(...)
self.setLayout(vbox)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
app.exit(app.exec_())
以上代码描述了一个QT简单Widget的主要结构.
也可以选择使用qt-designer.exe 来辅助画设计UI , 然后利用qt-UIC工具编译为
python代码 。 可参考网上教程.
Layout
描述UI是一个树形结构, 根节点设置一个Layout (本身是一个Widget)
根据界面布局,可以使用不同的 Layout
例如:
- HBox
- VBox
- Form
- Table
- …
Widget
Layout 可以通过 addWidget 添加叶节点, 就是自带的控件
例如:
- QPushButton
- QListView
- QLabel
- QPlainTextEdit
也可以通过addStretch添加占位空间, 控制布局结构.
详情可以参考 QT 文档.
https://doc.bccnsoft.com/docs/PyQt5/
逻辑处理
逻辑部分一般就是处理各种UI事件输入, 添加对应的UI响应逻辑.
QT 这个部分抽象为 Signal 和 Slot 机制
Signal
Signal 其实就是一些 控件 自生声明的当发生输入事件时,可以提供通知的机制,
类似Event.Listener机制.signal 可以通过 connect 函数与 处理该事件的 slot (槽函数) 绑定。
Slot
Slot 就是一些控件的事件响应函数(回调) , 也就是事件处理handler .
一些空间自身也提供的函数可以直接作为槽函数用 。
打包
使用pyinstaller 即可将python代码打包为二进制exe方便发布,根据情景可选择打包为单文件 还是 目录形式 发布 。
使用命令如下:
pyinstaller -F -w .\gui.py
