【发布时间】:2018-05-12 16:34:54
【问题描述】:
问题
root1 = tk.Tk()
root2 = tk.Toplevel()
如何从root1 和root2 确定实例是tk 还是toplevel?
我的情况(更多背景信息)
我使用相同的myCustomGUI 代码打开两个 Tkinter(实例)窗口。
root = tk.Tk()
mainGUI = myCustomGUI(root)
mainGUI.handler.setLevel(logging.INFO)
root2 = tk.Toplevel()
secondGUI = myCustomGUI(root2)
secondGUI.handler.setLevel(logging.ERROR)
在myCustomGUI 类中,我创建了一个on_closing() 函数,该函数在用户关闭窗口时运行(root.protocol("WM_DELETE_WINDOW", self.on_closing))。
在上述功能on_closing()我想要这样的东西:
def on_closing(self):
if self.root is tk:
self.root.quit()
exit() # exit the whole program OR run some custom exit function
else: # meaning self.root is Toplevel
pass
self.root.destroy()
也就是说,当实例为Toplevel时只销毁它,当实例为主窗口时,则退出tkinter并退出整个程序。
附加说明(与问题无关)
打开两个界面相同的窗口的目的是在一个窗口打印调试信息,在另一个窗口打印重要信息,因此界面相同。
我创建on_closing() 函数的目的是因为我必须从logger 中删除处理程序。
【问题讨论】:
标签: python python-2.7 tkinter tk toplevel