Разница между опциями" заполнить "и" развернуть " для метода Tkinter pack


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

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

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

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

1 21

1 ответ:

От эффбота :

Опцияfill сообщает менеджеру, что виджет хочет заполнить все отведенное ему пространство. Значение управляет заполнением пространства; и означает, что виджет должен расширяться как горизонтально, так и вертикально, 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 расширяется в обоих направлениях, но имеет меньше свободного места.

Развернуть против заполнения