Python实现界面,文本框输入姓名,单选框选择性别,复选框选择四项爱好中任意几项,点击提交按钮后建立新页面,打印姓名,所选性别,和爱好
时间: 2024-06-01 09:03:07 浏览: 123
好的,让我来回答你的问题。
这是一个比较常见的页面交互需求,在 Python 中可以使用 Tkinter 来实现。下面是一个简单的代码示例,可以让用户输入姓名,选择性别和爱好,并在点击提交按钮后弹出新窗口显示所输入的信息。
```python
import tkinter as tk
root = tk.Tk()
root.title("个人信息录入")
# 创建界面元素
name_label = tk.Label(root, text="姓名:")
name_entry = tk.Entry(root)
gender_label = tk.Label(root, text="性别:")
gender_var = tk.StringVar(value="男")
male_rb = tk.Radiobutton(root, text="男", variable=gender_var, value="男")
female_rb = tk.Radiobutton(root, text="女", variable=gender_var, value="女")
hobby_label = tk.Label(root, text="爱好:")
hobby_vars = [tk.BooleanVar() for _ in range(4)]
chbxs = [
tk.Checkbutton(root, text="体育", variable=hobby_vars[0]),
tk.Checkbutton(root, text="音乐", variable=hobby_vars[1]),
tk.Checkbutton(root, text="旅游", variable=hobby_vars[2]),
tk.Checkbutton(root, text="美食", variable=hobby_vars[3]),
]
submit_button = tk.Button(root, text="提交", command=lambda: show_info())
# 布局界面元素
name_label.grid(row=0, column=0)
name_entry.grid(row=0, column=1)
gender_label.grid(row=1, column=0)
male_rb.grid(row=1, column=1)
female_rb.grid(row=1, column=2)
hobby_label.grid(row=2, column=0)
chbxs[0].grid(row=2, column=1)
chbxs[1].grid(row=2, column=2)
chbxs[2].grid(row=3, column=1)
chbxs[3].grid(row=3, column=2)
submit_button.grid(row=4, column=1)
# 定义提交按钮回调函数
def show_info():
# 获取输入数据
name = name_entry.get().strip()
gender = gender_var.get()
hobbies = [chbx["text"] for chbx, checked in zip(chbxs, hobby_vars) if checked.get()]
# 创建新窗口显示个人信息
info_window = tk.Toplevel(root)
info_window.title("个人信息")
info_text = tk.Text(info_window, height=4, width=30)
info_text.insert("end", f"姓名:{name}\n")
info_text.insert("end", f"性别:{gender}\n")
info_text.insert("end", f"爱好:{', '.join(hobbies)}\n")
info_text.config(state="disabled")
info_text.pack()
root.mainloop()
```
在这个例子里,我们使用了 Tkinter 提供的 Label、Entry、Radiobutton、Checkbutton 和 Button 等界面元素来完成页面构建。其中,单选框和复选框都需要使用相关的 Variable 对象来保存用户的选择结果。
在提交按钮回调函数中,我们首先获取各个输入框的取值,然后创建一个新窗口,将用户输入的信息显示在其中。需要注意的是,在 Text 组件中显示信息时,我们需要将其设置为“只读”模式,以免用户修改。
阅读全文