Разница между опциями" заполнить "и" развернуть " для метода Tkinter pack
Я знаю, что это слишком тривиальный вопрос, но я новичок в python, и я только начал использовать модуль tkinter
. Я действительно искал об этом повсюду, и я не могу найти удовлетворительного ответа. Я нашел следующее:
fill
вариант: он определяет, следует ли использовать больше места или сохранить "свои" измерения.
expand
опция: он имеет дело с расширением родительского виджета.
Проблема в том, что эти два звука больше или меньше того же. Я даже попробовал несколько примеров, переключаясь между 4 значениями fill
и 2 значениями expand
, но получил более или менее одинаковый результат в 2 или 3 случаях, из-за чего у меня есть этот запрос. Любая помощь была бы признательна в этом отношении. Заранее спасибо!
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
расширяется в обоих направлениях, но имеет меньше свободного места.