gpt4 book ai didi

python - 为什么不能在同一代码中使用函数 'pack' 和 'grid

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:21 24 4
gpt4 key购买 nike

我知道您不能同时使用 packgrid,但为什么呢?为什么会引发错误?

_tkinter.TclError: cannot use geometry manager pack inside . which already has slaves managed by grid

最佳答案

原因是每个人都想控制给定容器(Frame、Toplevel 等)内所有小部件的几何形状,并且每个人都会在检测到它正在控制的小部件改变大小时重新应用其规则。

例如,如果您从使用 pack 开始,pack 会根据自己的算法将小部件添加到窗口中。根据小部件的大小和方向,这可能会导致窗口增大或缩小,并可能导致具有相同母版的其他小部件增大或缩小。

现在,如果您使用 grid 添加小部件,它会做同样的事情——它将使用自己的算法添加小部件。与 pack 一样,这可能会导致窗口增大或缩小,或者小部件改变大小。

接下来,因为 pack 正在管理一些小部件,当它检测到窗口大小发生变化时,它会重新应用自己的算法,可能会改变一些小部件的大小或位置。

接下来,因为一些小部件由网格管理,它会检测到它们的大小发生了变化,并且会尝试重新应用其算法。这可能会导致窗口增大或缩小,或更改某些小部件的大小。

接下来,由于一些小部件由 pack 管理,它将检测到它们的大小发生了变化,因此它将尝试重新应用其算法。这可能会导致窗口增大或缩小,或更改某些小部件的大小。

接下来,由于一些小部件由网格管理,它将检测到它们的大小发生了变化,因此它将尝试重新应用其算法。这可能会导致窗口增大或缩小,或更改某些小部件的大小。

接下来,由于一些小部件由 pack 管理,它将检测到它们的大小发生了变化,因此它将尝试重新应用其算法。这可能会导致窗口增大或缩小,或更改某些小部件的大小。

... 依此类推,直到时间结束,或者直到某个原因导致此循环结束。

如果您非常小心并且确切知道会发生什么,实际上可以将两者用于共享同一父级的小部件,但我从来没有遇到过这样做的正当理由。

您也绝对可以(并且应该)在整个应用程序中同时使用 pack 和 grid。两者都有优点和缺点。例如,您可以使用 pack 为应用程序的其余部分添加全宽工具栏、全宽状态栏和中间部分。如果应用程序的其余部分是表单,则在 GUI 的中间部分为小部件使用网格可能是有意义的。

关于python - 为什么不能在同一代码中使用函数 'pack' 和 'grid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com