在 tkinter 中使用 After

Using After in tkinter

我在 tkinter 中使用 .after 时遇到问题,time.sleep 也没有用。我想要的是它显示一个 WORD 5 秒,这个词被清除并出现一个条目。它在不使用 .after 的情况下工作正常,但现在它只是卡住了 5 秒,并且随机 WORD 在某个时间出现作为条目。

我还没有想出清除这个词的方法:-) 我是编程的新手,python,任何建议都将受到赞赏。谢谢!

for widget in window.winfo_children():
            widget.destroy()
WORD = random.choice(VOCABULARY)
tk.Label (window, image=photo1, bg="black") .grid(row=0, column=0)
tk.Label (window, text = "{}".format(WORD), bg="black", fg="white", font="none 20 bold") .grid(row=1, column=0)
window.after(5000)
ANSWER = tk.Entry(window, width=20, bg="white")
ANSWER.grid(row=2, column=0)
tk.Button(window, text="Check", width=6, command=check) .grid(row=3, column=0)
WORDS_PASSED.append("{}".format(WORD))
VOCABULARY.remove("{}".format(WORD))

简单的解决方法是在 window.after(5000) 之前添加 window.update() 以强制 tkinter 更新。要删除WORD,您需要分隔行

tk.Label (window, text = "{}".format(WORD), bg="black", fg="white", font="none 20 bold") .grid(row=1, column=0)

分成两行:

word = tk.Label(window, text=WORD, bg="black", fg="white", font="none 20 bold")
word.grid(row=1, column=0)

那你可以在window.after(5000)后面用word['text'] = ''隐藏WORD

修改后的代码如下:

...
word = tk.Label(window, text=WORD, bg="black", fg="white", font="none 20 bold")
word.grid(row=1, column=0)
window.update()  # force tkinter to update
window.after(5000)
word['text'] = ''  # hide the WORD
...