在 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
...
我在 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
...