Это так мало, потому что окна tkinter по умолчанию "сжимаются". Это называется распространением геометрии, и кажется, что вы, возможно, уже знакомы с ним, потому что вы вызываете grid_propagate
- хотя, фактически, он ничего не делает и не использует то, что возвращает.
На самом деле в вашем коде есть две проблемы. Во-первых, вы вызываете f1.grid_propagate()
, но вы используете pack
для размещения виджетов в f1
, поэтому вам нужно вместо этого вызвать f1.pack_propagate
. Во-вторых, вам нужно передать флаг False
, чтобы фактически отключить распространение. Это предотвратит сжатие f1
до его содержимого.
Во-вторых, вы не выключаете распространение на w1
, поэтому оно сжимается, чтобы соответствовать его дочерним элементам. Вам либо нужно позвонить w1.grid_propagate(False)
, либо вы можете позвонить w1.wm_geometry("500x400")
, чтобы попросить, чтобы оконный менеджер установил размер именно на это измерение.
Если вы только изучаете Tkinter, я предлагаю вам не поддаваться искушению отключить распространение. За свою пару десятков лет написания кода в тк я использовал эту функцию, может быть, раз в пару лет. Менеджеры геометрии Tkinter - замечательные инструменты, и вы должны научиться ими пользоваться. Вместо того, чтобы контейнеры управляли своим размером, пусть дочерние элементы будут иметь размер, который вы хотите, чтобы они были, и остальная часть графического интерфейса будет работать нормально.