让性别和年龄两个输入框,出现在同一个跳出的对话框中
时间: 2024-03-31 08:32:19 浏览: 47
以下是使用 PyQt6 创建一个窗口,上边有一个按钮,点击按钮后,跳出对话框,对话框中让输入年龄和性别两个数据,点击 ok 按钮,则打印这两个数据的示例代码:
``` python
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QInputDialog, QVBoxLayout, QDialog, QLabel, QHBoxLayout, QLineEdit
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("对话框示例")
self.setGeometry(100, 100, 300, 200)
# 创建一个按钮
self.button = QPushButton("打开对话框", self)
self.button.setGeometry(50, 50, 200, 50)
self.button.clicked.connect(self.open_dialog)
def open_dialog(self):
dialog = QDialog(self)
dialog.setWindowTitle("输入对话框")
dialog.resize(300, 200)
# 创建年龄输入框和性别输入框
age_label = QLabel("年龄:")
age_edit = QLineEdit()
sex_label = QLabel("性别:")
sex_edit = QLineEdit()
# 将年龄输入框和性别输入框添加到布局中
hbox1 = QHBoxLayout()
hbox1.addWidget(age_label)
hbox1.addWidget(age_edit)
hbox2 = QHBoxLayout()
hbox2.addWidget(sex_label)
hbox2.addWidget(sex_edit)
# 创建 OK 和 Cancel 按钮
ok_button = QPushButton("OK")
cancel_button = QPushButton("Cancel")
# 将 OK 和 Cancel 按钮添加到布局中
hbox3 = QHBoxLayout()
hbox3.addWidget(ok_button)
hbox3.addWidget(cancel_button)
# 将三个布局添加到垂直布局中
vbox = QVBoxLayout()
vbox.addLayout(hbox1)
vbox.addLayout(hbox2)
vbox.addLayout(hbox3)
# 将垂直布局设置为对话框的布局
dialog.setLayout(vbox)
# 连接 OK 和 Cancel 按钮的槽函数
ok_button.clicked.connect(lambda: self.print_info(age_edit.text(), sex_edit.text()))
cancel_button.clicked.connect(dialog.reject)
# 显示对话框
dialog.exec()
def print_info(self, age, sex):
print(f"年龄为:{age}")
print(f"性别为:{sex}")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
sys.exit(app.exec())
```
在上述代码中,我们首先创建了一个继承自 QMainWindow 的 MyMainWindow 类。在该类的构造函数中,我们创建了一个按钮,并将其连接到 open_dialog() 方法。当用户点击按钮时,open_dialog() 方法会打开一个对话框来获取用户输入的年龄和性别。对话框中创建了两个 QLineEdit 控件用于输入年龄和性别,以及两个 QLabel 控件用于显示标签。然后将它们添加到水平布局中,最后将水平布局添加到垂直布局中。
对话框中还创建了 OK 和 Cancel 两个按钮,并将它们添加到另外一个水平布局中,最后将该水平布局添加到垂直布局中。将垂直布局设置为对话框的布局。
当 OK 按钮被点击时,调用 MyMainWindow 类的 print_info() 方法来打印输入的年龄和性别。当 Cancel 按钮被点击时,对话框会被关闭。
注意,上述代码中使用的 QInputDialog 类是 PyQt6 中的。另外,为了创建一个自定义的对话框,我们创建了一个 QDialog 类的实例,并将年龄输入框、性别输入框、OK 按钮和 Cancel 按钮添加到该对话框中。
阅读全文