在这篇教程中,我们为你讲解如何用 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_()