2. 信号槽基础
任务目标
创建一个Qt窗口,包含一个按钮和一个标签。点击按钮时,标签文本更新为“按钮已点击”。通过此案例掌握PySide6/PyQt6中最核心的信号槽连接机制。
环境依赖
需要安装 PySide6(本案例以其为例,PyQt6用法几乎一致):
pip install PySide6
关键完整代码
import sys
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout
class ButtonWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("信号槽示例")
self.resize(300, 150)
# 创建控件
self.label = QLabel("初始文本", self)
self.button = QPushButton("点击我", self)
# 布局
layout = QVBoxLayout(self)
layout.addWidget(self.label)
layout.addWidget(self.button)
# 信号槽连接:按钮的clicked信号连接到槽函数
self.button.clicked.connect(self.on_button_clicked)
def on_button_clicked(self):
"""槽函数:更新标签文本"""
self.label.setText("按钮已点击")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ButtonWindow()
window.show()
sys.exit(app.exec())
运行方式
将代码保存为 button_demo.py,在终端执行:
python button_demo.py
验证方法
- 程序启动后,窗口显示标签“初始文本”和按钮“点击我”。
- 点击按钮,标签文本立即变为“按钮已点击”。
- 可多次点击,标签始终保持“按钮已点击”,说明信号槽连接稳定有效。
关键说明
clicked是QPushButton内置信号,点击按钮时自动发射。connect()将信号连接到任意Python可调用对象(此处为类方法)。- 槽函数接收
self作为第一个参数,无需手动传递;信号若携带参数,会自动传给槽函数。 - 本案例中信号无参数,因此槽函数无需额外形参。