Tkinter(python 2.7)|确定其tk实例或顶层实例

时间:2018-05-12 16:34:54

标签: python python-2.7 tkinter tk toplevel

问题

root1 = tk.Tk()
root2 = tk.Toplevel()

如何从root1root2确定实例是tk还是顶级?

我的情况(更多背景信息)

我使用相同的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中删除处理程序。

0 个答案:

没有答案