Подтвердить что ты не робот

Как остановить Tkinter Frame от сжатия до его содержимого?

Это код, который дает мне проблемы.

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

Если я прокомментирую строки с помощью метки, рамка отобразится с правой шириной. Однако, добавление метки, похоже, уменьшает размер рамки до размера метки. Есть ли способ предотвратить это?

4b9b3361

Ответ 1

По умолчанию tk frames сжимаются или растут, чтобы соответствовать их содержимому, чего вы хотите в 99% случаев. Термин, описывающий эту функцию, - это "распространение геометрии". Существует команда чтобы включить или отключить распространение геометрии.

Поскольку вы используете пакет, синтаксис будет выглядеть следующим образом:

f.pack_propagate(0)

или, может быть, root.pack_propagate(0), в зависимости от того, какой виджет вы действительно хотите повлиять.

Если говорить, что подавляющее большинство времени вы должны позволить tkinter вычислить размер. Когда вы поворачиваете распространение геометрии, ваш графический интерфейс не будет хорошо реагировать на изменения разрешения, изменения шрифтов и т.д. Менеджеры геометрии tkinter (pack, place и grid) являются чрезвычайно мощными. Научитесь использовать эту власть.