seo1网站查询,什么是seo推广,注册网易免费邮箱,WordPress在哪设置邮箱目录
VSCode添加外部工具
QtDesigner
PyUIC
PyRCC
加载UI文件模板代码
QMainWindow
QWidget
常用知识点
1. 修改标题图标
2. 图片资源管理
3. 图片按钮
4. 加载对话框
5. 动态加载Widget
6. 修改主题
其他注意事项
事件被多次触发 PyQt5提供了一个可视化图形工…目录
VSCode添加外部工具
QtDesigner
PyUIC
PyRCC
加载UI文件模板代码
QMainWindow
QWidget
常用知识点
1. 修改标题图标
2. 图片资源管理
3. 图片按钮
4. 加载对话框
5. 动态加载Widget
6. 修改主题
其他注意事项
事件被多次触发 PyQt5提供了一个可视化图形工具Qt Designer文件名为designer.exe。如果在电脑上找不到可以用如下命令进行安装 pip install PyQt5-tools 安装完毕后可在如下目录找到此工具软件 %LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 注意%LOCALAPPDATA%通常代表C:\Users\你的用户名\AppData\Local\
VSCode添加外部工具
QtDesigner
打开PYQT Integration插件设置搜索designer将自己本地的designer.exe完整路径设置进去。 注意如果找不到designer.exe Program路径要根据自己安装的PyQt5-tools路径设置pip install PyQt5-tools安装的PyQt5-tools路径的取决于安装Python时的路径pip -V可以看到路径如果用的是Python3.9.x尝试用以下路径文件先尝试在WinR中能否打开 %LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 实在找不到建议安装everything.exe全局搜索designer.exe位置 设置完成后我们可以在.ui文件右键进行如下操作 也可以在任意目录右键新建ui文件
PyUIC
打开设置过滤pyuic按照下图填写 Cmdpyuic5Add Options--import-fromuiFilepathUi_${ui_name}.py 这个配置是为了右键.ui文件时点击PYQT:Compile Form时能生成对应.py文件
PyRCC
确保配置如下即可 添加完成后可在.qrc文件右键点击PYQT: Compile Resource即可生成对应的.py资源文件。 加载UI文件模板代码
QMainWindow
我们通过可视化工具QtDesigner生成.ui文件后需要在代码中加载并显示。可参照PyUIC部分教程进行转换。
使用xxx.ui生成xxx.py代码文件后可使用如下代码进行加载。
注意本例的ui相关文件都在ui目录下即加载的ui包下的ui_main_window模块 PyQt5版GUI工具from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from ui.Ui_main_window import Ui_MainWindow
import sysclass MainWindow(QMainWindow):def __init__(self):super().__init__()# 创建对象self.ui Ui_MainWindow()# 初始化内容self.ui.setupUi(self)# 初始化uiself.init_ui()def init_ui(self):passdef main():app QApplication(sys.argv)window MainWindow()window.show()sys.exit(app.exec_())if __name__ __main__:main()
目录结构如下 QWidget
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
# 帮我们直接运行此文件时可以加载到上级目录的ui包
sys.path.append(../)from ui.Ui_my_widget import Ui_MyWidgetclass MyWidget(QWidget):def __init__(self, parentNone):super().__init__(parent)self.ui Ui_MyWidget()self.ui.setupUi(self)self.init_ui()def init_ui(self):passif __name__ __main__:app QApplication(sys.argv)window MyWidget()window.show()sys.exit(app.exec_())
QDialog from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from ui.Ui_serial_setting_dialog import Ui_SerialSettingDialog
import sysclass SerialSettingDialog(QDialog):def __init__(self, parentNone):super().__init__(parent)self.ui Ui_SerialSettingDialog()self.ui.setupUi(self)# 可以通过此设置固定对话框的大小self.setFixedSize(self.width(), self.height())self.initUi()self.baudrate Nonedef initUi(self):passdef accept(self):super().accept()print(accept)# 读取当前波特率的设置值self.baudrate self.ui.cb_bt.currentText()def reject(self):super().reject()print(reject)if __name__ __main__:app QApplication(sys.argv)dialog SerialSettingDialog()dialog.show()sys.exit(app.exec_())
常用知识点
1. 修改标题图标 2. 图片资源管理 3. 图片按钮
background-color: transparent;
border: none;
4. 加载对话框 5. 动态加载Widget
6. 修改主题
qt-material
主题官网GitHub - UN-GCPDS/qt-material: Material inspired stylesheet for PySide2, PySide6, PyQt5 and PyQt6
使用方式
安装 pip install qt-material 代码
from qt_material import apply_stylesheetapp QtWidgets.QApplication(sys.argv)
window QtWidgets.QMainWindow()# setup stylesheet
apply_stylesheet(app, themedark_teal.xml)# run
window.show()
app.exec_()
效果 其他注意事项
事件被多次触发
问题描述
如果自己给某个按钮或组件的信号设置槽函数期待点击一次只触发一次但是莫名被触发了多次。
原因分析
参考文档介绍QMetaObject - Qt for Python
原因很可能是因为槽函数命名问题。因为我们使用.ui文件生成的.py文件中会执行一个如下的方法。帮我们根据组件的变量名绑定对应的槽函数 QtCore.QMetaObject.connectSlotsByName(ChatRoomsWidget) 假设我们的对象有一个QPushButton类型的子对象对象名称为button1。则自动connect且捕获按钮的clicked()信号的槽是: def on_button1_clicked(): 如果对象本身有一个通过setObjectName()设置的对象名称它自己的信号也连接到它对应的槽。
解决办法
换一个槽函数名称或是按照官方规则直接声明槽函数