【问题标题】:difference between tk.Tk() and tk.Frametk.Tk() 和 tk.Frame 之间的区别
【发布时间】:2020-04-17 17:57:02
【问题描述】:

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

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

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

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

    tkinter 应用程序中的小部件存在于层次结构中,并且该层次结构必须具有根窗口。根窗口的特殊之处在于它没有父窗口。所有其他小部件必须有父级。每个应用程序都必须有一个tk.Tk 的实例,除非在极少数情况下,您不应拥有多个tk.Tk 的实例。

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

    使用tk.Tk 的好处是您的应用程序必须有它的实例。如果您不创建一个,则会为您创建一个。 python的禅宗说显式优于隐式,所以你应该总是显式地创建它。

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

    【讨论】:

    • 在链接的主题 (stackoverflow.com/questions/7300072/…) 中,您提到您从 Tk 切换到 Frame 作为要继承的一个类。你改变主意了吗?还是这个主题不同,我只是不明白其中的区别?无论如何:感谢您对 stackoverflow 上的这些“tkinter-questions”的巨大宝贵意见!
    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2020-05-10
    • 2014-09-20
    • 2010-10-28
    • 2015-10-04
    • 2012-08-12
    • 2011-02-18
    • 2019-12-21
    相关资源
    最近更新 更多