首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么tkinter ()函数不能工作?

为什么tkinter ()函数不能工作?
EN

Stack Overflow用户
提问于 2021-02-17 16:20:29
回答 1查看 56关注 0票数 0

我正在构建一个小型计算器应用程序。我已经决定暂时,我希望计算器在清除输入字段(其中显示数字)之前,将“语法错误”(如果有)显示1.5秒。问题是,当我声明input_field.after(1500, clear)时,程序不会清除该条目。这是我的clear()方法(它在其他地方工作)。它还更新了一个布尔值,但它与此无关,因此它基本上只为这个问题做了一件事。

代码语言:javascript
代码运行次数:0
运行
复制
def clear():
    input_field.delete(0, END)

如果我的函数有效,为什么“语法错误”文本在1.5秒后不被清除?

编辑:这是my equals()方法:

代码语言:javascript
代码运行次数:0
运行
复制
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'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 16:41:40

您需要启用对输入字段的写入。将您的明确功能更改为:

代码语言:javascript
代码运行次数:0
运行
复制
def clear():
    prev_state = input_field['state']
    input_field['state'] = 'normal'
    input_field.delete(0, END)
    input_field['state'] = prev_state
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66245879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档