使用一个简单的按钮

在本教程中,我们将向您展示如何使用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()

点击几次后,您将在终端上看到类似这样的内容:

Clickable Button Example