【11】Qt Designer
目录
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,尝试用以下路径文件(先尝试在Win+R中能否打开):
%LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
- 实在找不到,建议安装
everything.exe,全局搜索designer.exe位置
设置完成后,我们可以在.ui文件右键进行如下操作:
也可以在任意目录右键新建ui文件
PyUIC
打开设置,过滤pyuic,按照下图填写:
- Cmd:
pyuic5- Add Options:
--import-from=ui- Filepath:
Ui_${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, parent=None):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, parent=None):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, theme='dark_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()设置的对象名称,它自己的信号也连接到它对应的槽。
解决办法:
换一个槽函数名称,或是按照官方规则直接声明槽函数
相关文章:
【11】Qt Designer
目录 VSCode添加外部工具 QtDesigner PyUIC PyRCC 加载UI文件模板代码 QMainWindow QWidget 常用知识点 1. 修改标题图标 2. 图片资源管理 3. 图片按钮 4. 加载对话框 5. 动态加载Widget 6. 修改主题 其他注意事项 事件被多次触发 PyQt5提供了一个可视化图形工…...
【算法优选】 动态规划之路径问题——贰
文章目录 🎋前言🌲[下降最小路径和](https://leetcode.cn/problems/minimum-path-sum/)🚩题目描述🚩算法思路:🚩代码实现 🎍[最小路径和](https://leetcode.cn/problems/minimum-path-sum/)&…...
从视频中截取指定帧图片
前言: 我们在很多时候需要对视频文件进行分析,或者对视频产生缩略图。因此视频截取技术必不可少。 从本地文件中读取视频帧 导包 <dependency><groupId>org.jcodec</groupId><artifactId>jcodec</artifactId><versio…...
2023最新vue安装(npm,yarn,国内镜像,vue安装,vue导包)全套教程2023年12月最新
第一步(安装npm) 官网地址:https://nodejs.org/en/download windows安装yarn 详细教程_windows yarn-CSDN博客 第二步(yarn下载) windows 下需要下载msi文件 ,下载地址:https://yarnpkg.com/latest.msi npm install -g…...
性能测试基础
性能测试分类 客户端性能:测试APP自身的性能,例如CPU、内存消耗;web页面元素渲染速度 服务端性能:测试服务端项目程序的支持的并发、处理能力、响应时间等,主要通过接口来做性能测试 性能测试指标 并发 同时向服务…...
算法与数据结构--最短路径Dijkstra算法
题目: 算法与数据结构实验题 10.20 迷路 ★实验任务 学长经常迷路,现在他又遇到问题了,需要求救。 假设他有一张地图,上面有N个点,M条路,他现在在编号为S的地方,想要去编号为E的地方&#x…...
ASP.NET Core 8 在 Windows 上各种部署模型的性能测试
ASP.NET Core 8 在 Windows 上各种部署模型的性能测试 我们知道 Asp.net Core 在 windows 服务器上部署的方案有 4 种之多。这些部署方案对性能的影响一直以来都是靠经验。比如如果是部署在 IIS 下,那么 In Process 会比 Out Process 快;如果是 Self Hos…...
跨框架解决方案-Mitosis【Context】
Context Mitosis的context必须是: 在自己的文件中创建文件名必须以context.lite.ts结尾默认导出必须是一个返回context对象的函数 // simple.context.lite.ts import { createContext } from builder.io/mitosis;export default createContext({foo: bar,get foo…...
有哪些重要的项目是用 Python 开发的?
请访问 https://www.python.org/about/success 查看使用了 Python 的项目列表。 阅览 历次 Python 会议 的日程纪要可以看到许多不同公司和组织所做的贡献。 高水准的 Python 项目包括 Mailman 邮件列表管理器 和 Zope 应用服务器。 多个 Linux 发行版,其中最著名的…...
【计算机网络】应用层电子邮件协议
一、电子邮件系统架构 电子邮件是一个典型的异步通信系统,发送方从UA,也就是邮件客户端,通过应用层SMTP协议,传输层tcp协议,发送给发送方的邮件服务器,比如使用的是163邮箱,163提供的SMTP服务器…...
视频剪辑:视频转码实用技巧,批量将MP4转为MP3音频
随着数字媒体设备的普及,视频和音频文件已成为日常生活中的重要组成部分。有时,可能要将MP4视频文件转换为MP3音频文件,以提取其中的音频内容或者进行其他处理。这是耗费时间的任务,那要如何操作呢?本文详解云炫AI智剪…...
体系化学习运筹学基础算法的实践和总结
文章目录 引言目标设计目标实践文章汇总经验总结一则预告 引言 眨眼间已经12月了,眼看着2023年马上要过完了。 女朋友最近总说,工作以后感觉时间过的好快。事实上,我也是这么认为的。年纪越大,越会担心35岁危机的降临。所以&…...
【Java探索之旅】我与Java的初相识(一):Java的特性与优点及其发展史
🎥 屿小夏 : 个人主页 🔥个人专栏 : Java入门到精通 🌄 莫道桑榆晚,为霞尚满天! 文章目录 一. Java语言概述与优势1.1 Java的概述1.2 Java语言的优势 二. Java领域与发展史2.1 Java的使用领域2.…...
重写 AppiumService 类,添加默认启动参数,并实时显示启动日志
一、前置说明 在Appium的1.6.0版本中引入了AppiumService类,可以很方便的通过该类来管理Appium服务器的启动和停止。经过测试,使用该类的实例执行关闭server时,并没有释放端口号,会导致第二次启动时失败。另外,使用该…...
[方法论]allocation 空间内容分配
区分度 typeanalysisrecognitionconclusion type - 阅读 - 理解- 背诵- 听课 看 听 思考- reproduce/ 默写/ 应用- 背- 想- 写analysis 理解 和 背 是不占用现实空间的,可以在脑内不断消化,可以飞配给没有空间的时间块。 阅读 和 写是占用现实空间的…...
家电制造数字孪生5G智能工厂可视化系统,加速家电制造产业数字化转型
5G数字孪生、三维可视化与工业互联网的融合加速中国新型工业化进程,助推我国从制造大国迈进制造强国。家电行业是中国最具国际竞争力的产业之一,在企业数字化转型中,要求企业从生产设备到数字化系统,一系列的数字化、智能化改革已…...
Flink入门之部署(二)
三种部署模式 standalone集群,会话模式部署:先启动flink集群 web UI提交shell命令提交:bin/flink run -d -m hadoop102:8081 -c com.atguigu.flink.deployment.Flinke1_NordCount./Flink-1.0-SNAPSHOT.jar --hostname hadoop102 --port 8888 …...
SQL命令---修改字段名
介绍 使用sql语句修改字段名。 命令 alter table 表名 change 旧字段名 新字段名 新数据类型;例子 将a表id字段名改为id1 alter table a change id id1 int(12) NOT NULL;...
设计模式篇---代理模式
文章目录 概念结构实例静态代理动态代理 总结 概念 代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。 比如我们想从其他国家买东西,但我们无法直接联系外国的商家,可以找代理商,让他们…...
STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计
STM32单片机项目实例:基于TouchGFX的智能手表设计(2)UI交互逻辑的设计 目录 一、UI交互逻辑的设计 1.1 硬件平台的资源 1.2 界面切换功能 1.3 表盘界面 1.4 运动界面 1.6 设置界面 1.7 应…...
光通信行业彻底爆了!三项世界纪录背后藏着多少财富密码
在6G尚未正式投入商业应用之际,我国的科研工作者已然悄然斩获了三项世界纪录?于此同时,全球范围内的人工智能领域的大型企业正大肆投入资金用于提升算力,进而直接促使光模块市场变得异常火爆。这背后所蕴含的不仅仅是技术层面的突…...
快速验证openclaw技能安装:用快马平台一键生成环境配置与测试原型
最近在折腾机器人抓取相关的开发,需要验证openclaw这个技能库的安装效果。传统方式从零搭建环境特别耗时,光是处理各种依赖冲突就能耗掉半天。后来发现用InsCode(快马)平台可以快速生成验证原型,几分钟就搞定了环境配置和基础测试。这里分享下…...
如何让老旧Mac重获新生?OpenCore Legacy Patcher终极改造指南
如何让老旧Mac重获新生?OpenCore Legacy Patcher终极改造指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款开源…...
Alpamayo-R1-10B多场景测试:拥堵跟车、无保护左转、施工区绕行等长尾场景适配效果
Alpamayo-R1-10B多场景测试:拥堵跟车、无保护左转、施工区绕行等长尾场景适配效果 1. 引言:自动驾驶的“最后一公里”难题 想象一下,你坐在一辆自动驾驶汽车里,行驶在一条陌生的城市道路上。前方是一个没有红绿灯的十字路口&…...
深圳SEO公司为什么要定期优化网站
深圳SEO公司为什么要定期优化网站 在当今数字化时代,拥有一个优秀的网站已经不再足以满足企业的需求。随着互联网市场的竞争日益激烈,深圳SEO公司认识到定期优化网站的重要性,并将其作为持续提升网站流量和业务发展的核心策略之一。为什么深…...
N_m3u8DL-CLI-SimpleG:跨平台M3U8视频下载工具全场景应用指南
N_m3u8DL-CLI-SimpleG:跨平台M3U8视频下载工具全场景应用指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 一、场景定位:用户能力与需求匹配模型 三级…...
文脉定序保姆级教程:3步完成BGE-Reranker-v2-m3镜像免配置部署
文脉定序保姆级教程:3步完成BGE-Reranker-v2-m3镜像免配置部署 你是否遇到过这样的烦恼?用自己搭建的知识库或者搜索引擎提问,系统确实返回了一大堆结果,但最相关、最准确的答案却淹没在列表的中间甚至末尾。传统的检索方法&…...
JwChat避坑指南:Vue聊天组件这些隐藏配置能让体验提升200%
JwChat深度优化实战:解锁Vue聊天组件200%体验升级的隐藏技巧 当你已经用JwChat实现了基础聊天功能,却发现消息列表卡顿、表情包显示错位、历史加载闪烁——这些细节问题正在蚕食用户体验。作为基于Vue的轻量级聊天组件,JwChat的官方文档并未揭…...
Qwen2.5-14B-Instruct部署优化:像素剧本圣殿FlashAttention-2加速实测
Qwen2.5-14B-Instruct部署优化:像素剧本圣殿FlashAttention-2加速实测 1. 项目背景与优化目标 像素剧本圣殿是一款基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。这款工具将AI推理能力与8-Bit复古美学相结合,为创作者提供沉浸式的剧本开发体验…...
探索NextDNS Config:优化你的DNS配置以提升网络性能
探索NextDNS Config:优化你的DNS配置以提升网络性能 是一个开源项目,旨在帮助用户轻松地管理并优化其设备上的NextDNS设置。该项目由Yokoffing开发,并提供了多种平台(包括路由器、Android和iOS)的配置文件,…...
