实验5.1:简单GUI编程-学生成绩统计
题目描述:利用tkinter库完成2项GUI编程任务。
- 设计如图1所示GUI图形界面;
2.计算学生四门课程的平均成绩。
图1
提示:tkinter生成窗体、标签、只读文本框、按钮,grid实现窗体布局,参考示例如下。
import tkinter as tk
# 窗口对象
window = tk.Tk()
window.title("学生成绩统计")
result = tk.StringVar()
def Calculate():
try:
x1 = float(ccc.get())
x2 = float(pyy.get())
x3 = float(jaa.get())
x4 = float(wuu.get())
xaver = (x1+x2+x3+x4)/4
result.set(round(xaver, 1))
except:
showerror(title="提示", message="输入错误,请重新输入")
# C/C++程序设计
cc = tk.Label(window, text="C/C++程序设计")
cc.grid(row=0, column=0, padx=5, pady=5, sticky="e")
ccc = tk.Entry(window, width=15)
ccc.grid(row=0, column=1, padx=5, pady=5, sticky="w")
# Python程序设计
py = tk.Label(window, text="Python程序设计")
py.grid(row=1, column=0, padx=5, pady=5, sticky="e")
pyy = tk.Entry(window, width=15)
pyy.grid(row=1, column=1, padx=5, pady=5, sticky="w")
# Java程序设计
ja = tk.Label(window, text="Java程序设计")
ja.grid(row=2, column=0, padx=5, pady=5, sticky="e")
jaa = tk.Entry(window, width=15)
jaa.grid(row=2, column=1, padx=5, pady=5, sticky="w")
# 物联网工程
wu = tk.Label(window, text="物联网工程")
wu.grid(row=3, column=0, padx=5, pady=5, sticky="e")
wuu = tk.Entry(window, width=15)
wuu.grid(row=3, column=1, padx=5, pady=5, sticky="w")
# 计算平均成绩
caluate1 = tk.Button(window, text="计算平均成绩", command=Calculate)
caluate1.grid(row=4, column=0, columnspan=2, pady=5)
# 平均成绩
aver = tk.Label(window, text="平均成绩")
aver.grid(row=5, column=0, padx=5, pady=5, sticky="e")
averr = tk.Entry(window, width=15, state="readonly", textvariable=result)
averr.grid(row=5, column=1, padx=5, pady=5, sticky="w")
window.mainloop()
实验5.3:扩展实验1
题目描述:编写面向对象代码完成实验5.1。
提示:一个面向对象示例。
import tkinter
from tkinter import *
from tkinter.messagebox import *
class Calculate:
def __init__(self):
w = Tk()
w.title("学生成绩统计")
cc = Label(w,text="C/C++程序设计") # 创建Label标签
cc.grid(row=0, column=0, padx=5, pady=5, sticky="e") # 使用grid进行布局
self.v1 = IntVar()
ccc = Entry(w, width=15, textvariable=self.v1) # 创建Entry对象
ccc.grid(row=0, column=1, padx=5, pady=5, sticky="w") # 使用grid进行布局
py = Label(w, text="Python程序设计")
py.grid(row=1, column=0, padx=5, pady=5, sticky="e")
self.v2 = IntVar()
pyy = Entry(w, width=15, textvariable=self.v2)
pyy.grid(row=1, column=1, padx=5, pady=5, sticky="w")
ja= Label(w, text="Java程序设计")
ja.grid(row=2, column=0, padx=5, pady=5, sticky="e")
self.v3 = IntVar()
jaa = Entry(w, width=15, textvariable=self.v3)
jaa.grid(row=2, column=1, padx=5, pady=5, sticky="w")
calculate1 = Button(w, text="统计学生成绩", command=self.Calculate,
width=15,height=1)
calculate1.grid(row=3, column=0, columnspan=2, pady=5)
w.mainloop()
def Calculate(self):
try:
x1 = int(self.v1.get()) # 获取C++成绩
x2 = int(self.v2.get()) # 获取Python成绩
x3 = int(self.v3.get()) # 获取Java成绩
xaver = (x1+x2+x3)/3
xmax = max(x1,x2,x3)
xmin = min(x1,x2,x3)
str1 = "平均成绩:"+str(xaver)+"\n"+\
"最大成绩:"+str(xmax)+"\n"+\
"最小成绩"+str(xmin)+"\n"
showinfo(title="统计成绩",message=str1)
except:
showerror(title="提示", message="输入错误,请重新输入")
Calculate()