Разница между параметрами "fill" и "expand" для метода tkinter pack

Я знаю, что это слишком тривиальный вопрос, но я новичок в python, и я только начал использовать модуль tkinter. Я действительно искал ее повсюду, и я не могу найти удовлетворительный ответ. Я нашел следующее:

fill: он определяет, следует ли использовать больше места или держать "собственные" размеры.

expand option: он имеет дело с расширением родительского виджета.

Проблема заключается в том, что эти два звука более или менее одинаковы. Я даже попробовал несколько примеров, переключившись между 4 значениями fill и 2 значениями expand, но получил более или менее тот же результат в 2 или 3 случаях, из-за которого у меня есть этот запрос. Любая помощь будет оценена в этом отношении. Спасибо заранее!

Ответы

Ответ 1

От effbot:

Параметр заполнить сообщает менеджеру, что виджет хочет заполнить все пространство, назначенное ему. Значение управляет тем, как заполнить пробел; ОБА означает, что виджет должен расширяться как по горизонтали, так и по вертикали, X означает, что он должен расширяться только горизонтально, а Y означает, что он должен расширяться только в вертикальном положении.

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

Итак, fill сообщает, что виджет будет расти до тех пор, пока в указанном направлении не будет достаточно места, expand сообщает мастеру взять любое пространство, которое не назначено ни одному виджету, и распространяет его на все виджеты, которые имеют отличное от нуля значение expand.

Различие становится понятным при запуске этого примера:

import Tkinter as tk

root = tk.Tk()
root.geometry('200x200+200+200')

tk.Label(root, text='Label', bg='green').pack(expand=1, fill=tk.Y)
tk.Label(root, text='Label2', bg='red').pack(fill=tk.BOTH)

root.mainloop()

Вы можете видеть, что метка с expand=1 получает столько свободного места, сколько доступно для нее, но только занимает ее в указанном направлении, Y. Метка с fill=tk.BOTH расширяется в обоих направлениях, но имеет меньшее пространство.

Expand vs Fill