当前位置: 首页 > article >正文

基于tkinter实现学生管理系统(三)

学生信息管理系统-添加学生

在这里插入图片描述

代码实现

在上一节中的class StudentManagerApp中添加如下方法:

    # 添加学生信息
    def add_student(self):
        # 创建一个新的Toplevel窗口
        top = tk.Toplevel(self.root)
        top.title("添加学生")

        # 设置弹窗在主窗口的中间位置
        top.update_idletasks()
        width = 300
        height = 200
        x = (self.root.winfo_width() // 2) - (width // 2) + self.root.winfo_x()
        y = (self.root.winfo_height() // 2) - (height // 2) + self.root.winfo_y()
        top.geometry(f"{width}x{height}+{x}+{y}")

        # 输入框
        tk.Label(top, text="姓名:").grid(row=0, column=0, padx=5, pady=5)
        tk.Label(top, text="年龄:").grid(row=1, column=0, padx=5, pady=5)
        tk.Label(top, text="性别:").grid(row=2, column=0, padx=5, pady=5)

        name_var = tk.StringVar()
        age_var = tk.IntVar()
        gender_var = tk.StringVar()

        tk.Entry(top, textvariable=name_var).grid(row=0, column=1, padx=5, pady=5)
        tk.Entry(top, textvariable=age_var, validate="key",
                 validatecommand=(top.register(self.validate_age), '%P')).grid(row=1, column=1, padx=5, pady=5)
        tk.Entry(top, textvariable=gender_var).grid(row=2, column=1, padx=5, pady=5)

        # 确定按钮
        def ok():
            if name_var.get() and age_var.get() and gender_var.get():
                id_ = len(self.students) + 1
                self.students.append((id_, name_var.get(), age_var.get(), gender_var.get()))
                self.tree.insert("", "end", values=(id_, name_var.get(), age_var.get(), gender_var.get()))
                top.destroy()  # 关闭对话框

        tk.Button(top, text="确定", command=ok).grid(row=3, column=0, columnspan=2, pady=10)

    # 年龄验证
    def validate_age(self, new_text):
        try:
            value = int(new_text)
            if value < 0:
                return False
            return True
        except ValueError:
            return False

添加方法后,需要在“添加学员”按钮上调用此函数

tk.Button(btn_frame, text="添加学员", command=self.add_student).pack(side=tk.LEFT, padx=(0, 10))

http://www.kler.cn/a/281205.html

相关文章:

  • 计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习
  • 【深度学习】openai gpt调用的格式,参数讲解,tools是什么
  • 自建电商网站整合Refersion教程
  • 除猫毛宠物空气净化器是不是智商税?宠物空气净化器测评分享
  • django学习入门系列之第十点《django的获取请求与响应》
  • 10、Flink 动态表之动态表 连续查询(Continuous Query)详解
  • MySQL——子查询(5)带比较运算符的子查询
  • Leetcode Java学习记录——动态规划基础_2
  • Python | Leetcode Python题解之第378题有序矩阵中第K小的元素
  • EmguCV学习笔记 VB.Net 6.4 霍夫变换
  • eclipse下载安装与配置代码补全与中文版
  • 微软推出全新多语言高质量Phi-3.5语言模型
  • Vue组件的好处和理解、基本使用、注意事项、组件嵌套、VueComponent理解和原型链
  • Sweet Home 3D:Mac 与 Win 平台的强大 3D 室内装潢设计软件
  • Protect OpenAI key using Firebase function
  • 单片机的主流编程语言是什么
  • 实现简易 React SSR 框架
  • 最高加速超4倍!不依赖特定模型的统一模型压缩框架CPD发布(卡尔斯鲁厄理工学院)
  • 设计模式反模式:UML图示常见误用案例分析|设计模式|反模式|UML
  • 日本脸书Facebook代运营:如何投放广告与代运营合作全解析