【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_())
相关推荐
R_.L1 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
无小道3 小时前
Qt——常用控件
开发语言·qt
初次见面我叫泰隆4 小时前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
牵牛老人5 小时前
【Qt 开发后台服务避坑指南:从库存管理系统开发出现的问题来看后台开发常见问题与解决方案】
开发语言·qt·系统架构
xmRao6 小时前
Qt+FFmpeg 实现 PCM 音频转 AAC 编码
qt·ffmpeg·pcm
xmRao6 小时前
Qt+FFmpeg 实现录音程序(pcm转wav)
qt·ffmpeg
喜欢喝果茶.7 小时前
QOverload<参数列表>::of(&函数名)信号槽
开发语言·qt
wjhx7 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
踏过山河,踏过海7 小时前
【qt-查看对应的依赖的一种方法】
qt·visual studio
C++ 老炮儿的技术栈8 小时前
VS2015 + Qt 实现图形化Hello World(详细步骤)
c语言·开发语言·c++·windows·qt