检查tkvel中是否存在Toplevel()对象?

时间:2017-02-28 23:44:23

标签: python tkinter

RE:验证是否存在Toplevel()

我为用户设置了15秒的时间限制,因为他们选择是否需要9次随机元音或随机辅音,以形成随机的字母列表。 (我使用的是包含我从其他人那里得到的GUI计时器的Toplevel)。

如果他们按时管理它,ORIGINAL窗口会出现一个类似的计时器,取代元音/辅音按钮(我此时已销毁),旧的SEPARATE窗口Toplevel计时器被销毁。但是,我想进行第二次倒计时,因为它必须在30秒开始,在正确的时间开始,而不是在后台滴答(在VOWEL / CONSONANT按钮后面),在此期间用户仍在选择字母。

如果这些都没有任何意义,那么这是代码的基本概要,它不起作用。

# I tried to test if the the Toplevel timer had been destroyed (which happens as soon as the 
# user has finished with the 9 letters). If so, I could then start the NEW 30-second timer.

import tkinter as tk

root = tk.Tk()

test = tk.Label() 


# above: later, will test if a Label() widget counts as a 'child'. If it was the case  
# that only Toplevels counted as 'children', then I could have used the 'root.winfo_children' 
# command to test if the Toplevel() timer had been destroyed, in which case I can start a new 
# 30-second timer on the original window.

test.pack()

extraWindow = tk.Toplevel(root)

extraWindow.destroy() # for below, to TRY and test whether the Toplevel object is destroyed

if not root.winfo_children():
    print("N0") # doesn't happen, because test label is also a 'child' 
    # IMAGINE that this is where I set off the NEW 30-second timer

root.mainloop()

不幸的是,我在原始窗口上有一个标签,显示在第15秒内显示的字母列表,同时用户在新的字母中提供尽可能多的字母中的真实字词。 , 30秒。我无法使用winfo_children。我可以对winfo_Toplevel的效果做些什么吗?

(编辑:是的; 我终于完成了我的作业,发现了一些我很想念的东西,不幸的是,我回答了我自己的问题)

1 个答案:

答案 0 :(得分:2)

哎呀我刚刚找到了自己问题的答案。 您可以使用“tkinter.Toplevel.winfo_exists(my_toplevel_name)”检查顶级是否存在。

如果将它放在print语句中,如果它存在则返回1,如果不存在则返回0.