【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_())
相关推荐
懷淰メ15 小时前
python3GUI--基于YOLOv8深度学习的车牌识别系统(详细图文介绍)
深度学习·opencv·yolo·pyqt·图像识别·车牌识别·pyqt5
会飞的胖达喵16 小时前
Qt自动信号槽连接机制:深入解析与应用实践
开发语言·qt
qq_2575630720 小时前
PyCharm高效快捷键全攻略
pycharm·快捷键
Lhan.zzZ21 小时前
Qt跨线程网络通信:QSocketNotifier警告及解决
开发语言·c++·qt
Aevget21 小时前
QtitanDocking 如何重塑制造业桌面应用?多视图协同与专业界面布局实践
c++·qt·界面控件·ui开发·qtitandocking
qq_401700411 天前
QUdpSocket---单播
qt
Source.Liu1 天前
【QOwnNotes】概念架构说明
qt
世转神风-1 天前
qt-通信协议基础-QStirng转QByteArray-进阶操作
qt
世转神风-1 天前
qt-union-联合体基础讲解
开发语言·qt