Причина в том, что каждый хочет контролировать геометрию всех виджетов внутри данного контейнера (Frame, Toplevel и т. Д.), И каждый из них будет повторно применять свои правила, когда обнаружит, что виджет, которым он управляет, изменяет размер.
Например, если вы начнете использовать pack, pack добавит виджеты в окно в соответствии со своим собственным алгоритмом. В зависимости от размера и ориентации виджетов, это может привести к увеличению или уменьшению окна, а также к увеличению или уменьшению других виджетов с тем же мастером.
Теперь, если вы добавляете виджет с помощью grid
, он собирается сделать то же самое - он будет добавлять виджеты, используя свой собственный алгоритм. Как и pack
, это может привести к увеличению или уменьшению окна или изменению размера виджета.
Далее, поскольку pack
управляет некоторыми виджетами, когда он обнаруживает, что окно изменило размер, онбудет повторно применять свой собственный алгоритм, возможно, изменяя размер или положение некоторых виджетов.
Далее, поскольку некоторые виджеты управляются сеткой, он обнаружит, что они изменили размер, и попытается повторно применить свой алгоритм. Это может привести к увеличению или уменьшению окна или изменению размера некоторых виджетов.
Далее, поскольку некоторые из виджетов управляются пакетом, он обнаружит, что они изменили размер, поэтому попытается повторно применить его. алгоритм. Это может привести к увеличению или уменьшению окна или изменению размера некоторых виджетов.
Далее, поскольку некоторые из виджетов управляются сеткой, он обнаружит, что они изменили размер, поэтому попытается повторно применить его. алгоритм. Это может привести к увеличению или уменьшению окна или изменению размера некоторых виджетов.
Далее, поскольку некоторые виджеты управляются пакетом, он обнаружит, что они изменили размер, поэтому попытается повторно применить его. алгоритм. Это может привести к увеличению или уменьшению окна или изменению размера некоторых виджетов.
... и т. Д. До конца времени или до тех пор, пока что-то не приведет к завершению этого цикла.
На самом деле можно использовать как для виджетов, которые имеют общего родителя, если вы очень осторожны и точно знаете, что произойдет, но у меня никогда не было веской причины для этого.
Вы также можете (и должен ) использовать пакет и сетку в приложении в целом. У обоих есть сильные и слабые стороны. Например, вы можете использовать пакет для добавления панели инструментов полной ширины, строки состояния полной ширины и средней части для остальной части приложения. Если остальная часть приложения представляет собой форму, возможно, имеет смысл использовать сетку для виджетов в средней части графического интерфейса.