如何解决为什么我的 tkinter.Toplevel 小部件不会出现?
我希望在我的程序休眠 5 秒后打开一个 tkinter
窗口。在这个窗口上,应该有一个倒计时,从 10 秒开始。一旦倒计时达到 0,窗口就会关闭。这个过程应该无休止地继续下去。我不明白为什么我的 Toplevel
小部件没有出现。
我正在尝试使用 Toplevel
,因为据我所知,如果我使用 root,我的 Tk()
即一旦我调用 mainloop()
方法,代码就会被阻止,因此破坏根将结束程序。
截至目前,顶层没有出现,但函数 countdown_gui()
被调用。
root 不输入 mainloop
是否会以某种方式导致此问题?如果是这样,我将如何在不阻塞的情况下运行调用 mainloop
?线程是唯一的解决方案吗?
# Wait 5 seconds,open a countdown window for a 10 second countdown
# close the window and repeat
import time
import tkinter
def countdown_gui():
"""display an updating countdown."""
def update_countdown():
"""Update the label by reducing the value by 1."""
current_second = int(timer["text"])
timer.config(text = current_second - 1)
# The function calls itself,so it will update every second
timer.after(
ms = 1000,func = update_countdown
)
# Destroy everything once the countdown reaches the end
if current_second == 0:
toplevel.destroy()
# Create the toplevel
toplevel = tkinter.Toplevel(master = root)
# The label displaying the seconds
timer = tkinter.Label(
master = toplevel,text = 10
)
timer.pack()
# As soon as the label is created,start counting down
timer.after(
ms = 1000,func = update_countdown
)
root = tkinter.Tk()
while True:
print("sleeping...")
time.sleep(5)
countdown_gui()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。