我正在构建一个小型计算器应用程序。我已经决定暂时,我希望计算器在清除输入字段(其中显示数字)之前,将“语法错误”(如果有)显示1.5秒。问题是,当我声明input_field.after(1500, clear)
时,程序不会清除该条目。这是我的clear()
方法(它在其他地方工作)。它还更新了一个布尔值,但它与此无关,因此它基本上只为这个问题做了一件事。
def clear():
input_field.delete(0, END)
如果我的函数有效,为什么“语法错误”文本在1.5秒后不被清除?
编辑:这是my equals()方法:
def equals():
syntax_error = False
input_field['state'] = 'normal'
global ans, last_key_equals
expression = input_field.get().replace("x", "*").replace("ans", str(ans))
if len(expression) == 0:
return
try:
result = simple_eval(expression)
except SyntaxError:
syntax_error = True
result = "0"
clear()
input_field.insert(0, "Syntax Error")
input_field.after(1500, clear)
if not syntax_error:
clear()
input_field.insert(0, result)
ans = int(result)
last_key_equals = True
input_field['state'] = 'readonly'
发布于 2021-02-17 08:41:40
您需要启用对输入字段的写入。将您的明确功能更改为:
def clear():
prev_state = input_field['state']
input_field['state'] = 'normal'
input_field.delete(0, END)
input_field['state'] = prev_state
https://stackoverflow.com/questions/66245879
复制相似问题