• 周二. 9 月 17th, 2024

儿童 Python 启蒙之旅 第15课:GUI 控件与复杂事件处理

anilineup

8 月 9, 2024

在第14课中,孩子们已经学习了如何使用tkinter创建基本的GUI应用程序,并且掌握了如何处理简单的用户事件。接下来的第15课,我们将进一步扩展他们的知识,让他们学习如何使用更多的GUI元素,如文本框、复选框和单选按钮,并介绍如何处理这些控件的事件。

 

课程目标:

  • 学习如何在tkinter中创建文本框、复选框和单选按钮。
  • 理解如何处理这些控件的事件。
  • 创造一个稍微复杂一点的GUI应用程序。

课程内容:

  1. 复习上一课的内容

    • 回顾tkinter的基本用法。
    • 再次强调GUI的重要性。
    • 复习如何创建按钮和标签控件。
  2. 新控件介绍

    • 创建文本框(Entry)。
    • 创建复选框(Checkbutton)。
    • 创建单选按钮(Radiobutton)。
  3. 事件处理

    • 如何定义事件处理函数。
    • 使用不同的控件触发事件处理函数。
  4. 练习

    • 创建一个简单的调查问卷程序。
    • 实现收集用户输入的功能。
  5. 家庭作业

    • 设计一个带有更多选项的调查问卷。

示例代码:

import tkinter as tk
from tkinter import messagebox

def submit_survey():
    """处理提交按钮的点击事件,显示用户的答案。"""
    name = entry_name.get()
    age = entry_age.get()
    gender = "Male" if var_gender.get() == 1 else "Female"
    hobbies = [hobby for hobby, var in hobbies_vars.items() if var.get()]
    
    message = f"Name: {name}\nAge: {age}\nGender: {gender}\nHobbies: {', '.join(hobbies)}"
    messagebox.showinfo("Survey Results", message)

# 创建主窗口
root = tk.Tk()
root.title("Simple Survey")

# 创建姓名标签和文本框
label_name = tk.Label(root, text="Name:")
label_name.grid(row=0, column=0, sticky=tk.W, pady=5)
entry_name = tk.Entry(root)
entry_name.grid(row=0, column=1, pady=5)

# 创建年龄标签和文本框
label_age = tk.Label(root, text="Age:")
label_age.grid(row=1, column=0, sticky=tk.W, pady=5)
entry_age = tk.Entry(root)
entry_age.grid(row=1, column=1, pady=5)

# 创建性别标签和单选按钮
label_gender = tk.Label(root, text="Gender:")
label_gender.grid(row=2, column=0, sticky=tk.W, pady=5)
var_gender = tk.IntVar()
radio_male = tk.Radiobutton(root, text="Male", variable=var_gender, value=1)
radio_female = tk.Radiobutton(root, text="Female", variable=var_gender, value=2)
radio_male.grid(row=2, column=1, sticky=tk.W)
radio_female.grid(row=2, column=2, sticky=tk.W)

# 创建爱好标签和复选框
label_hobbies = tk.Label(root, text="Hobbies:")
label_hobbies.grid(row=3, column=0, sticky=tk.W, pady=5)
hobbies_vars = {}
for i, hobby in enumerate(["Reading", "Sports", "Music"]):
    var = tk.IntVar()
    check_hobby = tk.Checkbutton(root, text=hobby, variable=var)
    check_hobby.grid(row=i + 3, column=1, sticky=tk.W)
    hobbies_vars[hobby] = var

# 创建提交按钮
submit_button = tk.Button(root, text="Submit", command=submit_survey)
submit_button.grid(row=5, column= 

 

教学指导:

  1. 讲解代码逻辑

    • 解释tkinter的基本结构和组件。
    • 介绍如何使用EntryCheckbuttonRadiobutton创建文本框、复选框和单选按钮。
    • 说明如何获取这些控件的状态和值。
  2. 实操演示

    • 演示如何创建一个新的Python文件并输入以上代码。
    • 展示如何运行程序,并解释每个控件的作用。
  3. 互动环节

    • 邀请学生尝试修改代码,比如改变控件的布局或添加更多的选项。
    • 让学生尝试添加更多的功能,比如在用户提交数据后弹出对话框显示结果。
  4. 拓展学习

    • 引导学生思考如何使用类似的方法创建其他类型的GUI应用程序。
    • 讨论如何处理更复杂的用户交互,如滚动条、列表框等。
  5. 家庭作业

    • 要求学生设计并实现一个更复杂的调查问卷。
    • 游戏应该包括多个页面或步骤,让用户逐步完成调查。

通过本节课的学习,孩子们不仅能够学习到如何使用更多的GUI元素,还能掌握如何处理这些元素产生的事件。这将有助于他们建立更强大的编程技能,并为将来开发更复杂的应用程序打下坚实的基础。

anilineup

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注