python - 为什么 tkinter after() 函数不起作用?
问题描述
我正在构建一个小型计算器应用程序。我已经决定暂时,我希望计算器在清除输入字段(显示数字的位置)之前显示“语法错误”(如果有的话)1.5 秒。问题是当我声明时程序不会清除条目input_field.after(1500, clear)
。这是我的clear()
方法(在其他任何地方都可以使用)。它还更新了一个布尔值,但它是无关紧要的,所以为了这个问题它基本上做了一件事。
def clear():
input_field.delete(0, END)
如果我的功能有效,为什么“语法错误”文本在 1.5 秒后没有被清除?
编辑:这是我的 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'
解决方案
您需要启用对输入字段的写入。将您的 clear 功能更改为:
def clear():
prev_state = input_field['state']
input_field['state'] = 'normal'
input_field.delete(0, END)
input_field['state'] = prev_state
推荐阅读
- windows - Windows 环境变量在 cmd 中不起作用
- snowflake-cloud-data-platform - 如何在 BitBucket 的 Snowflake 中做数据库变更管理系统?来自 BitBucket 的 Snowflake 中的 DEV/QA/UAT/PROD 环境的 DDL 版本控制?
- timer - ARM 编程 - GD32F1x0 库
- android - 我可以使用 Android Telegram API 添加 user_id 吗?
- javascript - 未定义不是对象(评估'_ref.navigation')React-native导航错误
- python - 来自具有 id 的频道的 Telethon 阅读消息
- python - Beautifulsoup 不会检索所有的 html
- python - 在python中使用元组解包列表
- crud - EasyAdmin 3 Symfony 5 CrudController 关联字段
- javascript - vb.net如何通过jQuery为输入提交类型按钮更改onclick属性?