news 2026/7/8 2:15:32

【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/7/4 0:15:10

8个AI论文工具推荐!本科生毕业论文写作必备神器!

8个AI论文工具推荐!本科生毕业论文写作必备神器! 论文写作的“隐形助手”:AI 工具如何改变你的学术之路 在当今信息爆炸的时代,本科生面对毕业论文的压力愈发沉重。从选题到撰写,再到查重降重,每一个环节都…

作者头像 李华
网站建设 2026/7/1 10:33:31

C029基于博途西门子1200PLC苹果清洗控制系统仿真

C029基于博途西门子1200PLC苹果清洗控制系统仿真C029苹果清洗S71200HMI主电路图外部接线图资料包含: 1.程序和HMI仿真工程(博图V15及以上版本可以打开) 3.PLC外部接线图-截图1份 4.主电路图-截图1份 5.PLC程序-PDF版1份 6.程序-截图1份 7.仿真…

作者头像 李华
网站建设 2026/7/1 7:30:31

YOLO模型支持MPS加速(Mac端),苹果芯片也能跑

YOLO模型支持MPS加速(Mac端),苹果芯片也能跑 在一台轻薄的 MacBook Air 上,实时运行目标检测模型——这在过去几乎是不可想象的事。没有外接显卡、没有 CUDA 支持,仅靠一块 M1 芯片和系统原生的计算框架,就…

作者头像 李华
网站建设 2026/7/6 15:20:33

雷家林诗歌集录之十七Collection of Poems by Lei Jialin, Volume 17

I’m floating on a small boat, drifting towards the stars. There lies a dreamy glow, a mark of my past life, and a haven for inspiration. I’m floating on the Milky Way, as miraculous pearls of light in various colors flit past me. My eyes are filled with …

作者头像 李华
网站建设 2026/7/1 15:47:07

YOLO目标检测模型支持gRPC高效通信协议

YOLO目标检测模型支持gRPC高效通信协议 在智能制造工厂的质检线上,一台工业相机每秒捕捉上百帧高清图像,需要在毫秒级时间内判断是否存在焊点虚焊、元件缺失等缺陷。传统基于HTTP接口调用AI模型的方式,在高并发场景下频频出现超时与堆积——…

作者头像 李华