news 2026/2/25 5:55:40

【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/2/24 0:26:49

YOLO模型训练支持Class Weight平衡样本不均衡

YOLO模型训练支持Class Weight平衡样本不均衡 在一条高速运转的工业产线中,摄像头每秒捕捉数百帧图像,AI系统需要实时判断产品是否存在缺陷。看似平静的画面背后,隐藏着一个棘手的问题:正常品占比超过99%,而裂纹、气泡…

作者头像 李华
网站建设 2026/2/23 13:00:16

YOLO目标检测模型支持WebGL加速前端展示

YOLO目标检测模型支持WebGL加速前端展示 在智能摄像头、工业质检和在线教育等场景中,用户越来越期待“即开即用”的实时视觉能力——无需安装、不依赖后台服务,打开网页就能看到AI识别结果。这种需求推动了前端智能化的发展,而将YOLO这样的高…

作者头像 李华
网站建设 2026/2/20 16:30:11

TinyMCE5支持跨平台html富文本编辑器兼容

CMS企业官网编辑器扩展开发记录 需求分析与技术评估 作为上海的一名PHP全栈开发者,我最近接手了一个CMS企业官网的外包项目。客户提出了一项新需求:在TinyMCE 5编辑器中增加Office文档导入和一键粘贴功能。 核心需求点: 支持Word/Excel/P…

作者头像 李华
网站建设 2026/2/25 2:38:45

YOLOv8 Segmentation版实测:实例分割也能实时运行

YOLOv8 Segmentation版实测:实例分割也能实时运行 在智能制造车间的一条高速SMT贴片线上,每分钟有上千块PCB板流过质检工位。传统基于边界框的目标检测系统只能告诉你“这里有个异常”,却无法判断这个异常是微小焊渣还是致命的短路——直到图…

作者头像 李华
网站建设 2026/2/21 22:24:25

YOLO模型支持Kubernetes Helm Chart部署方案

YOLO模型支持Kubernetes Helm Chart部署方案 在智能制造工厂的质检线上,成千上万的产品正以每分钟上百件的速度通过视觉检测工位。摄像头实时抓拍图像,系统必须在200毫秒内完成缺陷识别并触发分拣机制——任何延迟都可能导致次品流入下一道工序。面对如此…

作者头像 李华