使用tkinter同时使用.pack()和.grid()

时间:2017-06-23 00:27:50

标签: python user-interface tkinter widget

我有一个程序包含一些Label()小部件,一些Button()小部件,一些Text()小部件和一些Entry()小部件。几个版本之前,我没有标签,我有更少的Entry()小部件,我混合.pack()和.grid()方便,我很好。我不得不做一些重构,并在流程中添加了额外的小部件 - 所有添加的新东西都使用了.grid()。其他小部件没有任何改变。现在,我得到一个错误,就是"无法使用网格。"等等(如果需要,我可以发布完整的错误消息)。为什么,我该如何解决这个问题? (如果有必要,我也可以发布代码。)

1 个答案:

答案 0 :(得分:1)

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

为什么呢?因为grid会尝试放置小部件,可能会根据各种选项增加或缩小小部件。接下来,pack将尝试根据其规则执行相同操作。这可能需要更改窗口小部件的宽度或高度。

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