tk.Tk()和tk.Frame之间的区别

时间:2019-12-27 21:34:21

标签: python tkinter

我注意到tk.Tk()tk.Frame这两个指令都创建了一个新窗口,所以它们之间有什么区别?和使用一个相比另一个有什么优势?

1 个答案:

答案 0 :(得分:2)

  

我注意到tk.Tk()和tk.Frame这两个指令都创建了一个新窗口

那是不正确的。 tk.Frame不会创建新窗口,除非您尚未创建根窗口,否则任何小部件都会强制创建根窗口。

tkinter应用程序中的小部件存在于层次结构中,并且该层次结构必须具有根窗口。根窗口的特殊之处在于它没有父窗口。所有其他小部件都必须有一个父级。每个应用程序都必须有一个tk.Tk的实例,除了非常罕见的情况外,您永远不能有一个以上的tk.Tk实例。

tk.Frame是一个框架:一个带有边框的小部件。像所有其他小部件(tk.Tk除外)一样,它必须有一个父级。

使用tk.Tk的优点是您的应用程序必须具有它的实例。如果您不创建一个,则会为您创建一个。禅宗的python表示显式比隐式更好,因此您应该始终显式创建它。

使用tk.Frame的优势在于,它可以很容易地将小部件收集到组中,并且可以将它们作为一组进行管理(添加边框,将它们作为一组进行布置等)。