【发布时间】:2020-04-17 17:57:02
【问题描述】:
我注意到tk.Tk()和tk.Frame这两个指令都创建了一个新窗口,那么它们之间有什么区别呢?使用一个比另一个有什么优势?
【问题讨论】:
我注意到tk.Tk()和tk.Frame这两个指令都创建了一个新窗口,那么它们之间有什么区别呢?使用一个比另一个有什么优势?
【问题讨论】:
我注意到 tk.Tk() 和 tk.Frame 指令都创建了一个新窗口
这是不正确的。 tk.Frame 不会创建新窗口,除非如果您尚未创建根窗口,任何小部件都会强制创建根窗口。
tkinter 应用程序中的小部件存在于层次结构中,并且该层次结构必须具有根窗口。根窗口的特殊之处在于它没有父窗口。所有其他小部件必须有父级。每个应用程序都必须有一个tk.Tk 的实例,除非在极少数情况下,您不应拥有多个tk.Tk 的实例。
tk.Frame 是一个框架:一个有边框的小部件,没有别的。像所有其他小部件(tk.Tk 除外)一样,它必须具有父级。
使用tk.Tk 的好处是您的应用程序必须有它的实例。如果您不创建一个,则会为您创建一个。 python的禅宗说显式优于隐式,所以你应该总是显式地创建它。
使用tk.Frame 的优势在于,它可以轻松地将小部件收集到组中并能够将它们作为一个组进行管理(添加边框,将它们作为一个组布置等)。
【讨论】: