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

验证方法

  1. 程序启动后,窗口显示标签“初始文本”和按钮“点击我”。
  2. 点击按钮,标签文本立即变为“按钮已点击”。
  3. 可多次点击,标签始终保持“按钮已点击”,说明信号槽连接稳定有效。
信号槽连接机制 按钮 (QPushButton) clicked() connect() 槽函数 on_button_clicked() 标签文本更新为:"按钮已点击"

关键说明

  • clicked 是 QPushButton 内置信号,点击按钮时自动发射。
  • connect() 将信号连接到任意Python可调用对象(此处为类方法)。
  • 槽函数接收 self 作为第一个参数,无需手动传递;信号若携带参数,会自动传给槽函数。
  • 本案例中信号无参数,因此槽函数无需额外形参。