使用Tkinter开发简单学生成绩计算工具
简介
在这篇博客中,我们将介绍如何使用Python的Tkinter库开发一个简单的学生成绩计算工具。这个工具允许用户输入期中考试和期末考试的分数,并根据这些分数计算出学生的最终成绩和成绩等级。
项目结构
我们将项目分为两个主要部分:
- 使用Tkinter构建GUI界面。
- 调用一个外部模块
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()
解释代码
-
导入模块
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
-
计算结果的函数
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
函数计算成绩,并更新结果标签的文本。 -
主界面布局
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
显示计算结果。 -
运行程序
if __name__ == '__main__': root = tk.Tk() root.geometry("600x400") root.title("计算学生成绩等级和成绩") mainpage(root) root.mainloop()
这部分代码初始化主窗口,设置窗口大小和标题,然后调用
mainpage
函数创建布局,最后进入Tkinter的事件循环。
总结
通过这篇博客,我们展示了如何使用Tkinter创建一个简单的学生成绩计算工具。我们使用了基本的Tkinter组件如LabelFrame
、Entry
、Button
和Label
,并结合外部模块的计算功能,实现了一个完整的桌面应用程序。希望这篇博客对你有所帮助,欢迎大家尝试扩展这个项目,实现更多功能。