По умолчанию виджеты сжимаются или расширяются, чтобы соответствовать их содержимому.Когда вы добавляете кнопку, рамка сжимается, чтобы соответствовать.
Похоже, вы хотите, чтобы кадр занимал только часть корневого окна.Вместо того, чтобы явно указывать ширину и высоту фрейма, обычно лучше, чтобы tkinter сделал это за вас.Заполните фрейм нужными виджетами, и пусть tkinter решит, насколько большим должен быть фрейм.Затем используйте соответствующие опции для grid
или pack
, чтобы расположить их логически.Когда tkinter разрешено делать виджеты нужного размера, вы получите гораздо более отзывчивый пользовательский интерфейс.
Например, если вы установите параметры fill
и expand
при вызове pack
на раме он не будет сжиматься, чтобы соответствовать.Если вам позже понадобится добавить больше виджетов, вам не нужно будет изменять другие части кода, чтобы они соответствовали.
f.pack(fill="both", expad=True)
Вы также можете отключить эту функцию «сжать, чтобы подогнать», вызвав f.pack_propagate(False)
, но это редко является правильным решением, потому что оно заставляет вас вычислять размеры, и ваши вычисления могут быть неверными, если вы запускаете программу в системе с другими шрифтами или разными разрешениями.