在这篇教程中,我们为你讲解如何用 Qt for Python 处理信号和槽。信号和槽是Qt的一个特色,用来让你的图形组件与其他图形组件或 Python 代码交流。在例程中,我们将创建一个按钮:每当点击这个按钮,输出信息 “Button clicked, Hello!” 到 Python 控制台。

首先,引用所需的 PySide6 类和 sys 模块:

import sys
from PySide6.QtWidgets import QApplication, QPushButton
from PySide6.QtCore import Slot

然后创建一个函数,用来输出信息到控制台:

# Greetings
@Slot()
def say_hello():
    print("Button clicked, Hello!")

注意
@Slot() 是一个装饰器,用来将一个函数定义为槽函数。现在可以先不理解它,但是还是需要这么写来防止意外错误。

像之前的例程中提到的一样,你需要创建 QApplication 来运行你的代码:

# Create the Qt Application
app = QApplication(sys.argv)

创建一个 QPushButton 实例,它是一个可点击的按钮。在创建时传入的字符串会显示在按钮上:

# Create a button
button = QPushButton("Click me")

在显示按钮之前,我们需要将按钮与之前定义的 say_hello() 函数连接。有新老两种方法来建立连接,我们这里就演示新的方法。QPushButton 预定义了一个叫 clicked 的信号,每当按钮被按下就会触发该信号。我们要把这个信号和 say_hello() 函数连接:

# Connect the button to the function
button.clicked.connect(say_hello)

最后,我们显示这个按钮,并进入主循环:

# Show the button
button.show()
# Run the main Qt loop
app.exec_()

下面是这个例程的完整代码:

#!/usr/bin/python

import sys
from PySide6.QtWidgets import QApplication, QPushButton
from PySide6.QtCore import Slot

@Slot()
def say_hello():
 print("Button clicked, Hello!")

# Create the Qt Application
app = QApplication(sys.argv)
# Create a button, connect it and show it
button = QPushButton("Click me")
button.clicked.connect(say_hello)
button.show()
# Run the main Qt loop
app.exec_()