PyQt5 – 创建一个用户表单来获取信息

  • Post category:Python

下面我将详细地讲解如何使用PyQt5来创建一个用户表单并获取信息的完整过程。

创建窗口

我们首先需要创建一个窗口来放置用户表单。使用以下代码来导入 PyQT5 并创建新的窗口:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(100, 100, 280, 80)
window.setWindowTitle("User Form")
window.show()
sys.exit(app.exec_())

这段代码中,我们导入了 QApplicationQWidget 模块。然后,我们创建了一个应用程序 app 和一个窗口 windowsetGeometry() 方法指定了窗口位置和大小, setWindowTitle() 方法设置窗口标题, show() 方法显示窗口, sys.exit(app.exec_()) 方法启动一个死循环来监听事件。

添加表单小部件

现在,我们可以开始添加表单小部件,以便用户在窗口中输入和提交信息。以下代码演示如何添加文本框和按钮:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout

app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(100, 100, 280, 80)
window.setWindowTitle("User Form")

layout = QVBoxLayout()

label_name = QLabel("Name:")
lineedit_name = QLineEdit()

label_email = QLabel("Email:")
lineedit_email = QLineEdit()

layout.addWidget(label_name)
layout.addWidget(lineedit_name)
layout.addWidget(label_email)
layout.addWidget(lineedit_email)

button_submit = QPushButton("Submit")
layout.addWidget(button_submit)

window.setLayout(layout)

window.show()
sys.exit(app.exec_())

在这段代码中,我们导入了 QLabelQLineEditQPushButton 模块,分别创建了一个标签、两个文本框和一个提交按钮。我们还创建了一个垂直布局对象 layout,并使用 addWidget() 方法将小部件添加到其中。最后,我们使用 setLayout() 方法将布局对象应用到窗口中。

获取用户输入

在添加了表单小部件之后,我们需要如何获取用户提交的信息呢?以下代码演示如何在 “Submit” 按钮被按下时获取用户输入:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout

app = QApplication(sys.argv)
window = QWidget()
window.setGeometry(100, 100, 280, 80)
window.setWindowTitle("User Form")

layout = QVBoxLayout()

label_name = QLabel("Name:")
lineedit_name = QLineEdit()

label_email = QLabel("Email:")
lineedit_email = QLineEdit()

layout.addWidget(label_name)
layout.addWidget(lineedit_name)
layout.addWidget(label_email)
layout.addWidget(lineedit_email)

button_submit = QPushButton("Submit")
button_submit.clicked.connect(lambda: submit_form(lineedit_name.text(), lineedit_email.text()))
layout.addWidget(button_submit)

window.setLayout(layout)


def submit_form(name, email):
    print(f"Name: {name}")
    print(f"Email: {email}")


window.show()
sys.exit(app.exec_())

我们将 submit_form 函数分配给 “Submit” 按钮的 clicked 信号,该函数将获取用户输入的内容并将其打印到控制台上。

示例1

让我们来看一个完整的示例,该示例将创建一个带有一个文本框和一个按钮的应用程序。当用户在文本框中输入姓名并按下按钮时,该应用程序将欢迎用户。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout

app = QApplication(sys.argv)

window = QWidget()
window.setGeometry(100, 100, 280, 80)
window.setWindowTitle("Welcome App")

layout = QVBoxLayout()

label_name = QLabel("Enter your name:")
lineedit_name = QLineEdit()

button_welcome = QPushButton("Welcome")
button_welcome.clicked.connect(lambda: welcome_guest(lineedit_name.text()))

layout.addWidget(label_name)
layout.addWidget(lineedit_name)
layout.addWidget(button_welcome)

window.setLayout(layout)


def welcome_guest(name):
    greeting = f"Hello, {name}!"
    print(greeting)
    button_welcome.setText(greeting)


window.show()
sys.exit(app.exec_())

示例2

以下示例创建一个应用程序,其中用户可以输入其联系方式,并在提交时将其保存到文件中。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout

app = QApplication(sys.argv)

window = QWidget()
window.setGeometry(100, 100, 280, 80)
window.setWindowTitle("Contact Form")

layout = QVBoxLayout()

label_name = QLabel("Name:")
lineedit_name = QLineEdit()

label_email = QLabel("Email:")
lineedit_email = QLineEdit()

button_save = QPushButton("Save")
button_save.clicked.connect(lambda: save_to_file(lineedit_name.text(), lineedit_email.text()))

layout.addWidget(label_name)
layout.addWidget(lineedit_name)
layout.addWidget(label_email)
layout.addWidget(lineedit_email)

layout.addWidget(button_save)

window.setLayout(layout)


def save_to_file(name, email):
    with open("contacts.txt", mode="a") as file:
        file.write(f"{name}, {email}\n")
    print(f"Saved {name}, {email} to contacts.txt.")


window.show()
sys.exit(app.exec_())

当用户在两个文本框中输入姓名和电子邮件,并按下 “Save” 按钮时,该应用程序将创建或追加到名为 “contacts.txt” 的文本文件中,同时在控制台打印保存的联系方式。

希望这些示例能够帮助您了解如何使用 PyQt5 来创建一个用户表单并获取信息。