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

news2024/9/30 23:05:53

学生信息管理系统-修改学生

在这里插入图片描述

代码实现

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

    # 修改学生信息
    def modify_student(self):
        selection = self.tree.selection()
        if not selection:
            messagebox.showwarning("警告", "请选择要修改的学员")
            return

        selected_item = self.tree.item(selection, "values")
        id_, name, age, gender = selected_item

        # 创建一个新的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(value=name)
        age_var = tk.IntVar(value=age)
        gender_var = tk.StringVar(value=gender)

        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():
                new_values = (id_, name_var.get(), age_var.get(), gender_var.get())
                self.tree.item(selection, values=new_values)
                for i, student in enumerate(self.students):
                    if student[0] == id_:
                        self.students[i] = new_values
                        break
                top.destroy()  # 关闭对话框

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

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

tk.Button(btn_frame, text="修改学员", command=self.modify_student).pack(side=tk.LEFT, padx=(0, 10))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2087426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04:创建PADS Logic软件逻辑库

1. 打开自带的库文件 2.保留common库,移除其他库文件 3.新建库 5点击封装工具栏 6选择2D线 7添加端点 8点击保存 9打开查看

SQLi-LABS靶场46-50通过攻略

less-46 1.判断注入点 ?sort1 页面出现报错 2.判断闭合方式 ?sort1 -- 3.查询数据库 因为页面有报错 所以使用报错注入 ?sort1 and updatexml(1,concat(1,database()),1)-- 4.查询数据库的所有表 ?sort1 and updatexml(1,concat(1,(select group_concat(table_name)…

【功能自动化】使用HTMLTestRunner生成测试报告

配置环境: 1.部署webtours网站 2.user.txt 3.HTMLTestRunner.py """ A TestRunner for use with the Python unit testing framework. It generates a HTML report to show the result at a glance.The simplest way to use this is to invoke it…

【Go高性能】测试(单元测试、基准测试)

Go测试 一、分类1. 单元测试2. 基准测试 二、基准测试1. 介绍2. 基准测试基本原则3. 使用testing包构建基准测试3.1 执行基准测试3.2 基准测试工作原理3.3 改进基准测试的准确性3.3.1 -benchtime3.3.2 -count3.3.3 -cpu 4. 使用benchstat工具比较基准测试(可跳过)4.…

Leetcode 第 408 场周赛题解

Leetcode 第 408 场周赛题解 Leetcode 第 408 场周赛题解题目1:3232. 判断是否可以赢得数字游戏思路代码复杂度分析 题目2:3233. 统计不是特殊数字的数字数量思路代码复杂度分析 题目3:3234. 统计 1 显著的字符串的数量思路代码复杂度分析 题…

Pycharm can‘t open file ‘D:\\Program‘: [Errno 2] No such file or directory

问题描述 Pycharm 使用Python 3.11.9 版本调试代码报错: 解决方案 1、WindowsR,调起CMD(PowerShell不行),执行以下指令: mklink /J "D:\PyCharm" "D:\Program Files\JetBrains\PyCharm 2…

react学习之useState和useEffect

useState useState 可以使函数组件像类组件一样拥有 state,函数组件通过 useState 可以让组件重新渲染,更新视图。 实际使用 setstate()中回调函数的返回值将会成为新的state值回调函数执行时, React会将最新的state值作为参数传递 const A…

Vulkan进阶系列1 - Raytracing 光线查询

一:概述 为了提高效率,光线追踪需要将几何体组织成加速结构(AS, 即Acceleration Structure),以减少渲染过程中光线与三角形的相交测试次数。这种层次结构通常在硬件中实现,但只有两个层级对用户可见:一个顶层加速结构(TLAS),它引用任意数量的底层加速结构(BLAS)。通…

Linux进程间的通信(一)exec函数族,getenv获取系统环境变量,system和popen的区别,文件和记录锁定通信

目录 几个系统关键api exec函数族 getenv() system() 文件和记录锁定通信 在Linux/Unix系统中,进程间通信方式(Inter-Process Comunication)通常有如下若干中方式: 1、文件和记录锁定 2、管道 3、信号 4、system-V 5、PO…

贪心算法三道经典题(买卖股票,分发饼干)

贪心算法 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 步骤: 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 分发饼干 LeetCode原题 找满足孩子数量的最大值———最优解问题 什么…

数据同步大冒险:PostgreSQL到MySQL的奇妙之旅

引言:一场跨数据库的浪漫邂逅 💑 在数据的世界里,不同数据库系统就像是来自不同星球的恋人,它们各自拥有独特的魅力,但偶尔也会渴望一场跨越界限的亲密接触。今天,我们就来见证一场PostgreSQL与MySQL之间的…

初赛试题-2022年CSP-J3

先言 本次试卷 完善程序 三、完善程序(每题3分,共30分) (1) 【答案】 A B C D A (2) 【答案】 A B C D A

探索用于小占用关键词检测的TinyML框架:一个简明概述

目录 摘要 第一部分:引言 第二部分:部署TinyML的常见挑战 第三部分:SF-KWS的不同方法 A. 网络架构(Network Architecture) B. 学习技术(Learning Techniques) C. 模型压缩(Mo…

最新黑名单查询录入系统PHP网站源码

源码介绍: 最新黑名单查询录入系统PHP网站源码 前端html 后端layui 操作部分都采用API接口的方式实线 集结了layui表格的多数据操作,添加,批量删除,分页,单项删除 后台数据修改采用绑定参数的形式来进行修改可以很…

C语言函数递归(含扫雷进阶思路)

文章目录 一、什么是递归二、递归的使用思路和限制条件1.递归的使用思路2.递归的限制条件 三、递归的举例举例1:求n的阶乘2.举例2:顺序打印⼀个整数的每⼀位 四、递归与迭代对比五、递归与迭代对比举例七、扫雷进阶思路 一、什么是递归 递归是学习C语⾔函…

暄桐教室分享“闲人”指南

一种理想的生活状态,叫“做个闲人”,如苏东坡《行香子述怀》那般,“对一张琴,一壶酒,一溪云”,放下纷扰,好自在。然而,闲并不是简单的无事可做,让自己时光充沛、能量聚集…

MacOS使用FileZilla通过ssh密钥文件连接远程服务器(已解决)

需求描述 mac电脑,使用filezilla通过FTP连接远程服务器,使用ssh密钥文件代替密码。 版本信息 MacOS:Sonoma 14.5 M3芯片 FileZilla:3.66.5 在这里插入图片描述 连接 1. 创建站点 打开filezilla工具,右上角选择“文件 -> 站点管理器”,打开站点管理器弹窗。 2.…

vue 动态替换父组件

替换父组件?? 什么鬼??? 这个场景的确很少见!!不过我们要说的的确是要替换父组件!!!!!! 就是子组件内容不变但是父组件变…

【HuggingFace Transformers】LlamaDecoderLayer源码解析

LlamaDecoderLayer源码解析 1. LlamaDecoderLayer 介绍2. LlamaDecoderLayer 类源码解析 1. LlamaDecoderLayer 介绍 LlamaDecoderLayer 是 LLaMA 模型中的一个关键组件,它结合了自注意力机制、全连接层和残差连接,以及对输入数据的归一化。主要流程为&…