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_())