为什么第一个窗口需要调用mainloop()而第二个窗口却不需要

时间:2019-06-29 01:08:18

标签: python-3.x tkinter

我正在制作一个需要2个窗口的应用程序。第一个,我做所有标准的事情,例如

entity_id

但是在我的第二个窗口中,我仅致电

root = tk.Tk()
...code...
root.mainloop()

,并且有效。如果我愿意

root = tk.Tk()

它仍然有效。出于纯粹的好奇心,为什么?

代码:

root = tk.Tk()
...code...
root.mainloop()

1 个答案:

答案 0 :(得分:1)

您不应多次致电tk.Tk()。对于其他窗口,请使用tk.Toplevel()。仅在极少数情况下才需要调用update,大多数情况下,GUI依赖于mainloop进行更新。

import tkinter as tk


class DecompilingChecker(tk.Toplevel):
    def __init__(self, master):
        super().__init__(master)
        self.title("DecompilingChecker Toplevel")

    def check(self):
        print('checking')


class Bridge(tk.Toplevel):
    def __init__(self, master):
        super().__init__(master)
        self.title("Bridge Toplevel")


class GUI(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("GUI window")
        self.bridge = Bridge(self)
        self.d_checker = DecompilingChecker(self)
        self.d_checker.check()


if __name__ == "__main__":
    GUI().mainloop()