news 2026/6/10 17:49:19

【pyqt-1】把Qt Designer集成到pyCharm,PyQT(窗口、添加空控件、事件处理)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【pyqt-1】把Qt Designer集成到pyCharm,PyQT(窗口、添加空控件、事件处理)

0 介绍PyQT5

1 把Qt Designer继承到pyCharm

$ProjectFileDirs$

-m PyQt5.uic.pyuic$FileName$ -o$FileNameWithoutExtension$.py$FileDir$

2 PyQT5的创建过程

fromPyQt5.QtWidgetsimportQApplication,QWidget,QMainWindow,QDialog,QLabel,QPushButtonimportsys""" ### 1. `QApplication` - **类型**:应用程序核心类(非界面组件) - **作用**:管理整个PyQt应用的生命周期、事件循环、系统资源(如字体、剪贴板),是所有PyQt程序的**入口基础**。 - **特点**:一个程序只能有一个`QApplication`实例,必须在界面组件创建前初始化。 ### 2. `QWidget` - **类型**:所有可视化组件的**基类** - **作用**:是按钮、标签、窗口等组件的“父类模板”,自身也可作为独立窗口(如你之前代码中的空白窗口)。 - **特点**:支持设置大小、位置、样式,可承载其他子组件,是界面布局的基础容器。 ### 3. `QMainWindow` - **类型**:主窗口类(继承自`QWidget`) - **作用**:用于创建带**菜单栏、工具栏、状态栏**的标准应用主窗口(如软件的主界面)。 - **特点**:内置了布局框架,可通过`setCentralWidget()`设置窗口的核心内容区域。 ### 4. `QDialog` - **类型**:对话框类(继承自`QWidget`) - **作用**:用于创建**临时交互窗口**(如弹窗、登录框、确认提示框),通常是模态/非模态的“临时窗口”。 - **特点**:默认没有菜单栏/工具栏,关闭后会销毁(或隐藏),常用于短流程交互。 ### 5. `QLabel` - **类型**:标签组件 - **作用**:显示**文本、图片、超链接**等静态内容,不可交互(仅用于展示信息)。 - **特点**:支持设置字体、颜色、对齐方式,可结合`QMovie`显示动态GIF。 ### 6. `QPushButton` - **类型**:按钮组件 - **作用**:创建可点击的按钮,触发**点击事件**(如“确定”“提交”按钮)。 - **特点**:支持显示文本/图标,可设置点击状态(禁用、选中),通过`clicked.connect()`绑定触发的函数。 """classMyWindow(QWidget):def__init__(self):super().__init__()# 设置窗口大小self.resize(400,300)# 设置窗口位置self.move(600,300)# 设置标题self.setWindowTitle('这是一个PyQT窗口')# 创建标签控件self.label=QLabel(self)self.label.setText('测试标签')self.label.move(100,200)# 创建按钮self.button=QPushButton(self)self.button.setText('按钮测试')self.button.move(250,200)if__name__=='__main__':app=QApplication(sys.argv)window=MyWindow()window.show()sys.exit(app.exec_())

3 信号绑定槽函数

fromPyQt5.QtWidgetsimportQApplication,QWidget,QMainWindow,QDialog,QLabel,QPushButtonimportsysclassMyWindow(QWidget):def__init__(self):super().__init__()# 设置窗口大小self.resize(400,300)# 设置窗口位置self.move(600,300)# 设置标题self.setWindowTitle('这是一个PyQT窗口')# 创建标签控件self.label=QLabel(self)self.label.setText('测试标签')self.label.move(100,200)# 创建按钮self.button=QPushButton(self)self.button.setText('按钮测试')self.button.move(250,200)# 绑定槽函数self.button.clicked.connect(self.btn_click)# 槽函数defbtn_click(self):self.label.setText('点我一下触发')if__name__=='__main__':app=QApplication(sys.argv)window=MyWindow()window.show()sys.exit(app.exec_())

3.1 重写鼠标或键盘事件

fromPyQt5.QtWidgetsimportQApplication,QWidget,QMainWindow,QDialog,QLabel,QPushButtonimportsysfromPyQt5.QtCoreimportQtclassMyWindow(QWidget):def__init__(self):super().__init__()# 设置窗口大小self.resize(400,300)# 设置窗口位置self.move(600,300)# 设置标题self.setWindowTitle('这是一个PyQT窗口')# 创建标签控件self.label=QLabel(self)self.label.setText('测试标签')self.label.move(100,200)# 创建按钮self.button=QPushButton(self)self.button.setText('按钮测试')self.button.move(250,200)# # 绑定槽函数# self.button.clicked.connect(self.btn_click)defmousePressEvent(self,event):""" 重写鼠标事件 :param event: :return: """ifevent.button()==Qt.LeftButton:self.label.setText('按了鼠标左键')self.label.adjustSize()# 自动调整标签大小elifevent.button()==Qt.RightButton:self.label.setText('鼠标右键被按下')self.label.adjustSize()# 自动调整标签大小else:self.label.setText('鼠标未动...')defmouseReleaseEvent(self,event):""" 改写鼠标释放事件 :param event: :return: """self.label.setText('鼠标释放了.......')self.label.adjustSize()defkeyPressEvent(self,event):""" 改写键盘事件 :param event: :return: """self.label.setText('按了键盘.......')self.label.adjustSize()defkeyReleaseEvent(self,event):""" 改写键盘释放事件 :param event: :return: """self.label.setText('键盘释放了.......')self.label.adjustSize()# # 槽函数# def btn_click(self):# self.label.setText('点我一下触发')if__name__=='__main__':app=QApplication(sys.argv)window=MyWindow()window.show()sys.exit(app.exec_())

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:06:00

YOLOv7-Wide改进版:宽度扩展带来精度飞跃

YOLOv7-Wide改进版:宽度扩展带来精度飞跃 在工业质检的产线上,一台摄像头正以每分钟300帧的速度扫描着高速移动的金属零件。突然,一个仅占几个像素点的微小裂纹被精准识别并触发剔除机制——这背后,正是现代目标检测模型对“精度”…

作者头像 李华
网站建设 2026/6/10 11:21:06

YOLO在天文图像处理中的尝试:星体自动识别分类

YOLO在天文图像处理中的尝试:星体自动识别分类 在现代天文学的前沿战场上,数据洪流正以前所未有的速度席卷而来。像LSST这样的巡天项目每夜就能产出数百万张高分辨率图像,每一张都可能藏着尚未被发现的星系、类星体或瞬变现象。面对如此庞大的…

作者头像 李华
网站建设 2026/6/10 11:17:49

YOLO在轨道交通中的应用:轨道异物入侵检测系统

YOLO在轨道交通中的应用:轨道异物入侵检测系统 在城市地铁隧道深处,一节空荡的轨道上,一个被遗忘的工具箱悄然静卧。列车正以每小时80公里的速度驶来——传统安防系统可能要等数秒甚至数十秒才能响应,而现代AI视觉系统&#xff0c…

作者头像 李华
网站建设 2026/6/10 15:36:34

YOLO模型训练支持Label Smoothing提升泛化能力

YOLO模型训练支持Label Smoothing提升泛化能力 在工业质检线上,一台AOI(自动光学检测)设备正高速扫描PCB板。突然,系统频繁报警——“焊点缺失”,但人工复检却发现大多是正常产品。工程师调出模型输出日志,…

作者头像 李华
网站建设 2026/6/10 13:07:04

YOLO模型支持Apache Arrow零拷贝数据传输

YOLO模型与Apache Arrow的零拷贝集成:打破数据传输瓶颈 在智能制造车间的一条高速质检产线上,摄像头以每秒120帧的速度捕捉产品图像,每一帧都需要在毫秒级内完成缺陷检测。传统AI推理流水线中,看似简单的“读图→预处理→送入模型…

作者头像 李华
网站建设 2026/6/10 0:35:53

YOLO目标检测支持OAuth2.0安全认证访问控制

YOLO目标检测与OAuth2.0安全认证的融合实践 在智能制造、智慧安防和边缘计算快速发展的今天,AI模型不再只是实验室里的“黑箱算法”,而是作为核心服务部署在生产系统的神经末梢。以YOLO为代表的实时目标检测技术,正被广泛应用于产线质检、交通…

作者头像 李华