【问题标题】:Using .pack() and .grid() at the same time with tkinter与 tkinter 同时使用 .pack() 和 .grid()
【发布时间】:2017-06-23 00:27:50
【问题描述】:

我有一个带有一些 Label() 小部件、一些 Button() 小部件、一些 Text() 小部件和一些 Entry() 小部件的程序。几次修改前,我没有标签,而且我有更少的 Entry() 小部件,我混合了 .pack() 和 .grid() 方便,我很好。我不得不做一些重构,并在这个过程中添加了额外的小部件——所有添加的新东西都使用了 .grid()。其他小部件没有任何变化。现在,我收到“无法在 . 中使用网格”等错误(如有必要,我可以发布完整的错误消息)。为什么,我该如何解决这个问题? (如有必要,我也可以发布代码。)

【问题讨论】:

    标签: python user-interface tkinter widget


    【解决方案1】:

    您不能将gridpack 与共享同一父级的小部件混合使用。

    为什么?因为grid 会尝试布局小部件,可能会根据各种选项来扩大或缩小小部件。接下来,pack 将尝试根据其规则做同样的事情。这可能需要它更改小部件的宽度或高度。

    grid 将看到小部件已更改大小,因此它将尝试根据其规则重新排列小部件。 pack 然后会注意到一些小部件的大小已更改,因此它将根据其规则重新排列小部件。 grid 将看到小部件已更改大小,因此它将尝试根据其规则重新排列小部件。 pack 然后会注意到一些小部件的大小已更改,因此它将根据其规则重新排列小部件。 grid 会看到...

    【讨论】:

    • 您能解释一下您所说的“父母”是什么意思吗?抱歉,我对 tkinter 真的很陌生。
    • @heather 一些人和文档使用“大师”这个词。小部件存在于树状层次结构中。除了根小部件之外,每个小部件都有一个父小部件。
    • @BrianOakley 你介意列出我正在使用的小部件的父母吗?
    • @heather:你没有显示代码,所以不,我不能。如果您没有显式设置父窗口(并且应该),那么父窗口就是根窗口。如果您没有显式创建一个根窗口(您应该),则会为您创建一个。
    • 好吧,所以基本上我需要为包和网格小部件设置不同的父级 - 我创建了一个根窗口,但没有明确创建父级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2014-11-23
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多