tkinter开发欧姆定律计算器如何检测Entry输入是否含一个及以上零值
欧姆定律计算器输入校验实现方案
解决思路
- 先对输入内容做首尾去空格处理,避免用户误输入空格导致校验失败
- 优先判断输入是否为空,空值直接触发错误提示
- 新增输入合法性校验:尝试将输入字符串转为浮点型,转换失败(输入非数字、格式错误的小数等)时触发错误
- 转为数值后再判断电流是否为0,此时
"0"、"00"、"0.0"这类多零、带小数的零值都会被正确识别 - 校验全部通过后再执行电阻计算,原生支持小数运算
修改后的完整代码
from tkinter import * import math as m def doMath(): # 取输入并去掉首尾空格 U_input = entryU.get().strip() I_input = entryA.get().strip() # 判空 if not U_input or not I_input: labelR.config(text="Error", bg= "red") return try: # 尝试转浮点型 U = float(U_input) I = float(I_input) # 判断电流是否为0 if I == 0: raise ZeroDivisionError # 计算电阻 R = U / I labelR.config(text="Resistance: {:.2f}\u03A9".format(R), bg="white") except (ValueError, ZeroDivisionError): # 转格式失败/电流为0都返回错误 labelR.config(text="Error", bg= "red") frame = Tk() frame.geometry("500x200") # 预设窗口大小避免组件显示不全 entryU = Entry(frame) entryU.place (x=95, y= 60, width= 250, height =30) entryA= Entry(frame) entryA.place(x=95, y=100, width= 250, height=30) buttonMath = Button(frame, text="R",command = doMath) buttonMath.place(x=360, y=70, width=120, height=50) labelR = Label (frame, text="Resistance: ") labelR.place(x=10, y= 145) frame.mainloop()
额外说明
该方案同时兼容了用户输入非数字内容的场景,比如输入字母、特殊符号、格式错误的小数都会触发错误提示,比原代码的容错性更强。
内容的提问来源于stack exchange,提问作者Vondor
相关产品推荐
相关产品推荐

