python - 我如何才能正确地将这个等式与这个期末成绩计算器的 GUI 联系起来?
问题描述
我正在尝试使用 python 创建一个期末成绩计算器。我正在为 GUI 使用 Tkinter。我创建了一个方程式,用于计算您在期末考试后的成绩。 (期望等级 - (当前等级 * 1 - 等级权重)/等级权重。
但是,当我在输入框中输入数字后单击以获取结果时,出现“浮点除以零”错误。任何帮助或建议将不胜感激!
注意:“成绩权重”是小数百分比,这就是我在GradeBox2上使用浮点数的原因
from tkinter import *
main = Tk()
# --- VARS ---
GradeBox1 = tkinter.IntVar()
GradeBox2 = tkinter.IntVar()
GradeBox3 = tkinter.IntVar()
# --- FUNCTION ---
def program():
try:
print(float(GradeBox3.get())) - (GradeBox1.get() * (1 - float(GradeBox2.get()))) / (float(
GradeBox2.get()))
except Exception as ex:
print(ex)
'error'
# --- MAIN ---
Label(main, text="Current Grade").grid(row=0)
Entry(main, textvariable=GradeBox1).grid(row=0, column=1)
Label(main, text='Weight of exam (Enter decimal then percentage ex: .30)').grid(row=2)
Entry(main, textvariable=GradeBox2).grid(row=2, column=1)
Label(main, text='Desired grade').grid(row=4)
Entry(main, textvariable=GradeBox3).grid(row=4, column=1)
mybutton = Button(main, text='Get your grade!', command=program).grid(row=6, column=0)
main.mainloop()
解决方案
看起来您希望GradeBox3
' 的值介于 0 和 1 之间。如果是这样,问题是您将 an 传递IntVar
给Entry
对象,导致您的输入值被转换为整数,因为将浮点数转换为 int 给出你传递的值的地板。在您的情况下,会将高于 0 和低于 1 的浮点值更改为 0,从而导致稍后除以零错误。您的 (float) 强制转换没有任何意义,因为此时的值已经为 0。使用DoubleVar
s 而不是IntVar
s 应该可以解决您的问题。
推荐阅读
- reactjs - 如何从firestore中获取一个正则表达式的集合?
- python - 'numpy.float64' 对象在曲线拟合时不可调用
- angular - 无法从 api 响应角度解析 json 数组
- c# - 有没有办法“监听”程序的出站系统消息?
- javascript - 实时数据库云函数:为什么这个查询返回 null?
- rust - HashMap 中的变异向量元素
> - expo - 如何在 react native/expo 中导航两个不同堆栈的屏幕
- azure - 重复的天蓝色虚拟机
- python - 为什么我不能在 PyDub 中使用“play()”函数?
- java - Spring Boot 自定义 OAuth 提供程序未返回任何状态码为 401 的响应