下面我将详细地讲解如何使用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_())
这段代码中,我们导入了 QApplication
和 QWidget
模块。然后,我们创建了一个应用程序 app
和一个窗口 window
。 setGeometry()
方法指定了窗口位置和大小, 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_())
在这段代码中,我们导入了 QLabel
、QLineEdit
和 QPushButton
模块,分别创建了一个标签、两个文本框和一个提交按钮。我们还创建了一个垂直布局对象 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 来创建一个用户表单并获取信息。