我注意到tk.Tk()
和tk.Frame
这两个指令都创建了一个新窗口,所以它们之间有什么区别?和使用一个相比另一个有什么优势?
答案 0 :(得分:2)
我注意到tk.Tk()和tk.Frame这两个指令都创建了一个新窗口
那是不正确的。 tk.Frame
不会创建新窗口,除非您尚未创建根窗口,否则任何小部件都会强制创建根窗口。
tkinter应用程序中的小部件存在于层次结构中,并且该层次结构必须具有根窗口。根窗口的特殊之处在于它没有父窗口。所有其他小部件都必须有一个父级。每个应用程序都必须有一个tk.Tk
的实例,除了非常罕见的情况外,您永远不能有一个以上的tk.Tk
实例。
tk.Frame
是一个框架:一个带有边框的小部件。像所有其他小部件(tk.Tk
除外)一样,它必须有一个父级。
使用tk.Tk
的优点是您的应用程序必须具有它的实例。如果您不创建一个,则会为您创建一个。禅宗的python表示显式比隐式更好,因此您应该始终显式创建它。
使用tk.Frame
的优势在于,它可以很容易地将小部件收集到组中,并且可以将它们作为一组进行管理(添加边框,将它们作为一组进行布置等)。