使用一个简单的按钮¶
在本教程中,我们将向您展示如何使用Qt for Python处理信号和槽。信号和槽是Qt的一个功能,它允许您的图形小部件与其他图形小部件或您的Python代码进行通信。我们的应用程序创建了一个按钮,每次点击它时,都会将按钮点击了,你好!消息记录到Python控制台。
让我们从导入必要的PySide6类和python sys模块开始:
import sys
from PySide6.QtWidgets import QApplication, QPushButton
from PySide6.QtCore import Slot
我们还创建一个将消息记录到控制台的python函数:
# Greetings
@Slot()
def say_hello():
print("Button clicked, Hello!")
注意
@Slot() 是一个装饰器,用于标识一个函数为槽。目前不需要理解为什么,但请始终使用它以避免意外行为。
现在,正如前面例子中提到的,你必须创建QApplication来运行你的PySide6代码:
# Create the Qt Application
app = QApplication(sys.argv)
让我们创建可点击的按钮,这是一个QPushButton实例。 为了给按钮添加标签,我们向构造函数传递一个python字符串:
# Create a button
button = QPushButton("Click me")
在我们显示按钮之前,我们必须将其连接到我们之前定义的say_hello()函数。有两种方法可以做到这一点;使用旧风格或新风格,后者更符合Python风格。在这种情况下,我们将使用新风格。您可以在PySide6中的信号与槽维基页面上找到关于这两种风格的更多信息。
QPushButton 有一个预定义的信号叫做 clicked,每次按钮被点击时都会触发这个信号。我们将把这个信号连接到 say_hello() 函数:
# Connect the button to the function
button.clicked.connect(say_hello)
最后,我们显示按钮并启动Qt主循环:
# Show the button
button.show()
# Run the main Qt loop
app.exec()
这是此示例的完整代码:
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()
点击几次后,您将在终端上看到类似这样的内容:
