0
我正在学习如何使用Okin方法使用tkinter创建父窗口和子窗口,但是在创建Toplevel窗口时不完全理解传递父窗口的“窗口”属性的原因。见下文......为什么我们在创建Toplevel窗口时通过根窗口的'窗口'属性?
from tkinter import *
class Main():
def __init__(self, master):
self.master = master
self.master.title("Main Window")
self.button1 = Button(self.master, text="Click Me 1", command = self.Open1)
self.button1.grid(row=0, column=0, sticky=W)
self.button2 = Button(self.master, text="Click Me 2", command = self.Open2)
self.button2.grid(row=0, column=2, sticky=W)
self.button3 = Button(self.master, text="Close", command = self.Close)
self.button3.grid(row=1, column=0, sticky=W)
def Open1(self):
second_window = Toplevel(self.master)
window2 = Second(second_window)
def Open2(self):
third_window = Toplevel(self.master)
window3 = Third(third_window)
def Close(self):
self.master.destroy()
class Second():
def __init__(self, master):
self.second_window = second_window
self.master.title("Second Window")
class Third():
def __init__(self, master):
self.master = master
self.master.title("Third Window")
root_window = Tk()
root_window.geometry("200x85")
main_window = Main(root_window)
root_window.mainloop()
然而,这两个顶级窗口的创建也可以不带参数的书面...它似乎产生相同的结果:
def Open1(self):
second_window = Toplevel()
window2 = Second(second_window)
def Open2(self):
third_window = Toplevel()
window3 = Third(third_window)
那么,为什么我们在实例化顶层窗口时通常会传递此根窗口的属性?
谢谢布莱恩。那么这是否意味着如果没有传递父对象(即将其作为second_window = Toplevel()),使second_window成为另一个根窗口,因此不是main_window的子对象? – sw123456
@ samwickins32:没有。只能有一个根窗口。 Toplevel窗口不是也不能是根窗口。如果你没有给顶层窗口一个父窗口,它的父窗口就是根窗口。 –
太棒了。非常感谢您的参与。总而言之,在创建Toplevel窗口时传递属性的原因是明确指定它是哪个窗口的子窗口? – sw123456