使用Tkinter开发简单学生成绩计算工具

使用Tkinter开发简单学生成绩计算工具

简介

在这篇博客中,我们将介绍如何使用Python的Tkinter库开发一个简单的学生成绩计算工具。这个工具允许用户输入期中考试和期末考试的分数,并根据这些分数计算出学生的最终成绩和成绩等级。

项目结构

我们将项目分为两个主要部分:

  1. 使用Tkinter构建GUI界面。
  2. 调用一个外部模块calculate中的print_grade函数来计算成绩。

Tkinter简介

Tkinter是Python的标准GUI库。它提供了一种简单的方法来创建窗口、按钮、文本框等GUI元素。通过Tkinter,我们可以快速开发出功能丰富的桌面应用程序。

代码实现

创建主要窗口和布局

首先,我们需要创建一个主要窗口,并在其中添加必要的GUI元素。我们将创建一个包含两个文本框、一个按钮和一个标签的界面。用户可以在文本框中输入期中考试和期末考试的分数,点击按钮后,系统会计算出学生的成绩,并在标签中显示结果。

import tkinter as tk
from model.calculate import print_grade

def calculate_result(result_label, midterm_score, final_score):
    result, result_score = print_grade(midterm_score.get(), final_score.get())
    result_label.config(text=f"学生成绩等级:{result}, 分数:{result_score}")

def mainpage(root):
    # 添加一个边框
    label = tk.LabelFrame(root, text="添加学生分数信息")
    label.pack()
    
    midterm_score = tk.IntVar()
    midterm_score.set(0)
    midterm_score_entry = tk.Entry(label, textvariable=midterm_score)
    midterm_score_entry.grid(row=1, column=0, rowspan=2, columnspan=2, sticky="ew", padx=20)
    
    final_score = tk.IntVar()
    final_score.set(0)
    final_score_entry = tk.Entry(label, textvariable=final_score)
    final_score_entry.grid(row=1, column=2, rowspan=2, columnspan=2, sticky="ew", padx=20)
    
    cau = tk.Button(label, text="提交", command=lambda: calculate_result(result_label, midterm_score, final_score))
    cau.grid(row=3, column=1, rowspan=2, columnspan=2, sticky="ew", padx=20)
    
    result_label = tk.Label(label, text=None)
    result_label.grid(row=5, column=0, rowspan=2, columnspan=4, sticky="ew", padx=20)

if __name__ == '__main__':
    root = tk.Tk()
    root.geometry("600x400")
    root.title("计算学生成绩等级和成绩")
    mainpage(root)
    root.mainloop()

解释代码

  1. 导入模块

    import tkinter as tk
    from model.calculate import print_grade
    

    我们首先导入了Tkinter库和外部模块中的print_grade函数。

    def print_grade(midterm_score, final_score):
        '''
    
        :param midterm_score: 期中成绩
        :param final_score: 期末成绩
        :param result: 学生分数等级
        :param result_score: 学生分数成绩
        :return: 学生成绩等级, 学生成绩分数
        '''
        result_score = midterm_score+ final_score
        result = ''
        if result_score>=90 and result_score<=100:
            result = 'A'
            pass
        elif result_score>=80:
            result = 'B'
            pass
        elif result_score>=70:
            result = 'C'
            pass
        elif result_score>=60:
            result = 'D'
            pass
        else:
            result = 'F'
            pass
        return result, result_score
    
  2. 计算结果的函数

    def calculate_result(result_label, midterm_score, final_score):
        result, result_score = print_grade(midterm_score.get(), final_score.get())
        result_label.config(text=f"学生成绩等级:{result}, 分数:{result_score}")
    

    这个函数接收期中和期末成绩的输入,调用print_grade函数计算成绩,并更新结果标签的文本。

  3. 主界面布局

    def mainpage(root):
        label = tk.LabelFrame(root, text="添加学生分数信息")
        label.pack()
    
        midterm_score = tk.IntVar()
        midterm_score.set(0)
        midterm_score_entry = tk.Entry(label, textvariable=midterm_score)
        midterm_score_entry.grid(row=1, column=0, rowspan=2, columnspan=2, sticky="ew", padx=20)
    
        final_score = tk.IntVar()
        final_score.set(0)
        final_score_entry = tk.Entry(label, textvariable=final_score)
        final_score_entry.grid(row=1, column=2, rowspan=2, columnspan=2, sticky="ew", padx=20)
    
        cau = tk.Button(label, text="提交", command=lambda: calculate_result(result_label, midterm_score, final_score))
        cau.grid(row=3, column=1, rowspan=2, columnspan=2, sticky="ew", padx=20)
    
        result_label = tk.Label(label, text=None)
        result_label.grid(row=5, column=0, rowspan=2, columnspan=4, sticky="ew", padx=20)
    

    我们创建了一个LabelFrame来包含所有输入和按钮。使用Entry创建输入框,通过Button提交数据,并用Label显示计算结果。

  4. 运行程序

    if __name__ == '__main__':
        root = tk.Tk()
        root.geometry("600x400")
        root.title("计算学生成绩等级和成绩")
        mainpage(root)
        root.mainloop()
    

    这部分代码初始化主窗口,设置窗口大小和标题,然后调用mainpage函数创建布局,最后进入Tkinter的事件循环。

总结

通过这篇博客,我们展示了如何使用Tkinter创建一个简单的学生成绩计算工具。我们使用了基本的Tkinter组件如LabelFrameEntryButtonLabel,并结合外部模块的计算功能,实现了一个完整的桌面应用程序。希望这篇博客对你有所帮助,欢迎大家尝试扩展这个项目,实现更多功能。

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值