Tkinter程序中提交按钮绑定函数的if else条件判断输出错误问题
问题解决
1. 条件判断错误修复
原代码中if Ans>5 or Ans <10的逻辑完全错误——or表示只要满足任一条件就成立,这会导致所有整数都会被判定为"在5和10之间"。正确逻辑是同时满足大于5且小于10,需用and连接,或者用连续比较写法:
if 5 < Ans < 10: # 等价于 Ans >5 and Ans <10 blank.config(text="this is between 5 and 10") else: blank.config(text="this is out of range")
2. 支持多次输入(防崩溃优化)
当前代码本身支持多次输入不同数值点击Show,但输入非整数内容会直接崩溃。添加异常处理可避免这个问题:
def show_answer(): try: Ans = int(num1.get()) if 5 < Ans < 10: blank.config(text="this is between 5 and 10") else: blank.config(text="this is out of range") except ValueError: blank.config(text="请输入有效整数")
完整修复代码
from tkinter import * main = Tk() def show_answer(): try: Ans = int(num1.get()) if 5 < Ans < 10: blank.config(text="this is between 5 and 10") else: blank.config(text="this is out of range") except ValueError: blank.config(text="请输入有效整数") Label(main, text = "Enter Num 1:").grid(row=0) Label(main, text = "The Result is:").grid(row=2) # 原标签"The Sum is:"与功能不符,建议修改 num1 = Entry(main) blank = Label(main,text="", width=25 ) num1.grid(row=0, column=1) blank.grid(row=2, column=1) Button(main, text='Quit', command=main.destroy).grid(row=4, column=0, sticky=W, pady=4) Button(main, text='Show', command=show_answer).grid(row=4, column=1, sticky=W, pady=4) main.mainloop()
说明
- 修复后的条件判断能正确识别5到10之间的整数(不含5和10)
- 添加异常处理后,输入非整数内容会给出提示,程序不会崩溃
- 无需重启程序,每次输入新数值点击Show即可得到结果
内容的提问来源于stack exchange,提问作者PANKAJ
相关产品推荐
相关产品推荐

