Вопрос
root1 = tk.Tk()
root2 = tk.Toplevel()
Как я могу определить из root1
и root2
, является ли экземпляр tk или toplevel?
Моя ситуация (для большего контекста)
Я открываю два окна Tkinter (экземпляр), используя один и тот же код myCustomGUI
.
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
.