创建对话框应用程序#
本教程展示如何构建一个简单的带有些基本小部件的对话框。想法是让用户在一个 QLineEdit
中提供他们的名字,当用户点击一个 QPushButton
时,对话框会向他们打招呼。
让我们从创建并显示一个对话框的简单占位符开始。此占位符在教程过程中会被更新,但如果你需要的话,可以直接使用这个占位符。
import sys
from PySide6.QtWidgets import QApplication, QDialog, QLineEdit, QPushButton
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.setWindowTitle("My Form")
if __name__ == '__main__':
# Create the Qt Application
app = QApplication(sys.argv)
# Create and show the form
form = Form()
form.show()
# Run the main Qt loop
sys.exit(app.exec())
导入内容对你来说并不陌生,与创建 QApplication
和执行 Qt 主循环一样。这里唯一的创新是 类定义。
你可以创建任何子类 PySide6 小部件的类。在这种情况下,我们正在继承 QDialog
以定义一个自定义对话框,我们称其为 Form。我们还有一些实现了的 init()
方法,它会调用带有父小部件的 QDialog
的 init 方法(如果有)。另外,新的 setWindowTitle()
方法仅仅设置了对话框窗口的标题。在 main()
中,你可以看到我们创建了一个 Form 对象,并将其展示给世界。
创建小部件#
我们将创建两个小部件:一个用户可以输入他们名字的 QLineEdit
,和一个打印 QLineEdit
内容的 QPushButton
。所以,让我们在我们 Form 的 init()
方法中添加以下代码
# Create widgets
self.edit = QLineEdit("Write my name here..")
self.button = QPushButton("Show Greetings")
从代码中很明显,这两个小部件都会显示相应的文本。
创建一个布局以组织小部件#
Qt 提供了布局支持,可以帮助您组织应用程序中的小部件。在这种情况下,让我们使用 QVBoxLayout
来垂直布局小部件。在创建小部件后,将以下代码添加到 init()
方法中。
# Create layout and add widgets
layout = QVBoxLayout(self)
layout.addWidget(self.edit)
layout.addWidget(self.button)
因此,我们创建布局,使用 addWidget()
添加小部件。
完整代码
以下是本教程的完整代码
import sys
from PySide6.QtWidgets import (QLineEdit, QPushButton, QApplication,
QVBoxLayout, QDialog)
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
# Create widgets
self.edit = QLineEdit("Write my name here")
self.button = QPushButton("Show Greetings")
# Create layout and add widgets
layout = QVBoxLayout()
layout.addWidget(self.edit)
layout.addWidget(self.button)
# Set dialog layout
self.setLayout(layout)
# Add button signal to greetings slot
self.button.clicked.connect(self.greetings)
# Greets the user
def greetings(self):
print(f"Hello {self.edit.text()}")
if __name__ == '__main__':
# Create the Qt Application
app = QApplication(sys.argv)
# Create and show the form
form = Form()
form.show()
# Run the main Qt loop
sys.exit(app.exec())
执行代码并写下您的名字后,按钮将在终端上显示消息