使用 Tkinter after 方法调用使用 get 方法的函数不起作用

问题描述 投票:0回答:1

我目前正在为 Tkinter 桌面应用程序编写代码,用于测试您的打字速度。我有一个带有随机文本的文本框和一个输入小部件,用户可以在其中输入随机文本的单词。 60 秒后,我希望禁用输入小部件,然后我使用 get 来了解用户输入的内容,并将其与文本框的原始文本进行比较,以查看正确输入了多少个单词,从而了解用户能够输入多少个单词60 秒内正确输入。

所以基本上我写的是:

def disable_entry():
    user_input = input_field.get()
    input_field.config(state="disabled")
    return user_input

...创建其他小部件的更多代码...

input_field = Entry(width = 70)
input_field.grid(column = 1, row = 1)

user_input = window.after(60000, disable_entry)

但是,我创建的 user_input 变量不是使用 get 方法获取在条目小部件中实际输入的内容,而是在第一次运行程序时返回“after#1”,在第二次运行程序时返回“after#2”,等等等等...

我该如何解决这个问题?

python windows tkinter get
1个回答
0
投票

要解决打字速度测试应用程序中的问题,请更新disable_entry函数来处理用户输入,并添加compare_texts函数来比较键入的文本。

要解决打字速度测试应用程序中的问题,请修改disable_entry函数以直接处理用户输入,并创建一个新函数compare_texts来比较键入的文本。

def disable_entry():
    input_field.config(state="disabled")
    user_input = input_field.get()
    compare_texts(user_input)

# Other code...

input_field = Entry(width=70)
input_field.grid(column=1, row=1)

# disable_entry function will run in 60 seconds. Scheduled.
window.after(60000, disable_entry)
© www.soinside.com 2019 - 2024. All rights reserved.