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

0 介绍PyQT5

1 把Qt Designer继承到pyCharm

bash 复制代码
$ProjectFileDirs$
bash 复制代码
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

$FileDir$

2 PyQT5的创建过程

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QDialog, QLabel, QPushButton
import sys

"""
### 1. `QApplication`
- **类型**:应用程序核心类(非界面组件)
- **作用**:管理整个PyQt应用的生命周期、事件循环、系统资源(如字体、剪贴板),是所有PyQt程序的**入口基础**。
- **特点**:一个程序只能有一个`QApplication`实例,必须在界面组件创建前初始化。


### 2. `QWidget`
- **类型**:所有可视化组件的**基类**
- **作用**:是按钮、标签、窗口等组件的"父类模板",自身也可作为独立窗口(如你之前代码中的空白窗口)。
- **特点**:支持设置大小、位置、样式,可承载其他子组件,是界面布局的基础容器。


### 3. `QMainWindow`
- **类型**:主窗口类(继承自`QWidget`)
- **作用**:用于创建带**菜单栏、工具栏、状态栏**的标准应用主窗口(如软件的主界面)。
- **特点**:内置了布局框架,可通过`setCentralWidget()`设置窗口的核心内容区域。


### 4. `QDialog`
- **类型**:对话框类(继承自`QWidget`)
- **作用**:用于创建**临时交互窗口**(如弹窗、登录框、确认提示框),通常是模态/非模态的"临时窗口"。
- **特点**:默认没有菜单栏/工具栏,关闭后会销毁(或隐藏),常用于短流程交互。


### 5. `QLabel`
- **类型**:标签组件
- **作用**:显示**文本、图片、超链接**等静态内容,不可交互(仅用于展示信息)。
- **特点**:支持设置字体、颜色、对齐方式,可结合`QMovie`显示动态GIF。


### 6. `QPushButton`
- **类型**:按钮组件
- **作用**:创建可点击的按钮,触发**点击事件**(如"确定""提交"按钮)。
- **特点**:支持显示文本/图标,可设置点击状态(禁用、选中),通过`clicked.connect()`绑定触发的函数。

"""


class MyWindow(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 信号绑定槽函数

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QDialog, QLabel, QPushButton
import sys


class MyWindow(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)

    # 槽函数
    def btn_click(self):
        self.label.setText('点我一下触发')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

3.1 重写鼠标或键盘事件

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QDialog, QLabel, QPushButton
import sys
from PyQt5.QtCore import Qt


class MyWindow(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)

    def mousePressEvent(self, event):
        """
        重写鼠标事件
        :param event:
        :return:
        """
        if event.button() == Qt.LeftButton:
            self.label.setText('按了鼠标左键')
            self.label.adjustSize()  # 自动调整标签大小
        elif event.button() == Qt.RightButton:
            self.label.setText('鼠标右键被按下')
            self.label.adjustSize()  # 自动调整标签大小
        else:
            self.label.setText('鼠标未动...')

    def mouseReleaseEvent(self, event):
        """
        改写鼠标释放事件
        :param event:
        :return:
        """
        self.label.setText('鼠标释放了.......')
        self.label.adjustSize()

    def keyPressEvent(self, event):
        """
        改写键盘事件
        :param event:
        :return:
        """
        self.label.setText('按了键盘.......')
        self.label.adjustSize()

    def keyReleaseEvent(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_())
相关推荐
李昊哲小课2 小时前
第1章-PySide6 基础认知与环境配置
python·pyqt·pyside
娇娇yyyyyy3 小时前
QT编程(17): Qt 实现自定义列表模型
开发语言·qt
肖恭伟6 小时前
Cursor Superpowers 零基础开发 Qt 界面
开发语言·qt
qq_283720056 小时前
Qt QML 中为 CheckBox 设置鸿蒙字体(HarmonyOS Sans)——适配 Qt 5.6.x 与 Qt 5.12+
开发语言·qt·harmonyos
奇树谦12 小时前
3-5年工控上位机(C++/Qt)面试题|聚焦实战,直击核心模块
c++·qt
爱吃巧克力的程序媛13 小时前
COM 对象的核心基础知识
c++·qt
小喻同学i13 小时前
卸载VS2015,安装VS2017后Qt报错问题
开发语言·qt
载数而行52013 小时前
Qt事件event分发,事件和信号关系,事件过滤
qt
码踏樱花13 小时前
PyCharm专业版Win/mac/Linux 2017-2025多版本安装教程【长期使用】
ide·python·pycharm
载数而行52013 小时前
Qt鼠标处理的项目,包含事件分发、处理机制
qt