Пакувальники TkInter
Пакувальник (менеджер геометрії, менеджер розташування) це спеціальний механізм, який розміщує (упаковує) віджети на вікні. У Tkinter є три пакувальника: pack, place, grid.
Зверніть увагу, що в одному віджеті можна використовувати тільки один тип упаковки, при змішуванні різних типів упаковки програма, швидше за все, не буде працювати.
Пакувальник pack () є найінтелектуальнішим (і найнепередбачуванішим). Як правило цей пакувальник використовують для розміщення віджетів один за одним (зліва направо або зверху вниз). При використанні цього пакувальника за допомогою властивості side потрібно вказати: до якої сторони батьківського віджета він має примикати. Для створення складної структури з використанням цього пакувальника зазвичай використовують Frame, вкладені одна в одну.
Аргументи pack:
side ("left" / "right" / "top" / "bottom") — до якої сторони має примикати віджет;
fill (None / "x" / "y" / "both") — чи розширювати простір, що надають віджету;
expand (True / False) — чи розширювати сам віджет, щоб він зайняв весь наданий йому простір;
in_ — явна вказівка на те, в якій батьківський віджет потрібно вкласти даний віджет.
Додаткові методи віджетів для роботи з пакувальником pack:
pack_configure — синонім для pack;
pack_slaves (синонім slaves) — повертає список всіх дочірніх запакованих віджетів;
pack_info — повертає інформацію про конфігурацію пакування;
pack_propagate (синонім propagate) (True / False) — включає / відключає поширення інформації про геометрію дочірніх віджетів. Як усталено віджет змінює свій розмір відповідно до розміру своїх нащадків. Цей метод може відключити таку поведінку — pack_propagate(False). Це може бути корисно, якщо необхідно, щоб віджет мав фіксований розмір і не змінював його за примхою нащадків;
pack_forget (синонім forget) — видаляє віджет і всю інформацію про його розташування з пакувальника. Пізніше цей віджет може бути знову розміщений.
Цей пакувальник є таблицею з осередками, в які поміщаються віджети
Аргументи grid()
row - номер рядка, в який поміщаємо віджет.
rowspan - скільки рядків займає віджет
column - номер стовпця, в який поміщаємо віджет.
columnspan - скільки стовпців займає віджет.
padx / pady — розмір зовнішньої межі (бордюру) по горизонталі / вертикалі;
ipadx / ipady — розмір внутрішньої межі (бордюру) по горизонталі і вертикалі. Різниця між pad і ipad у тому, що при вказівці pad розширюється вільний простір, а при ipad розширюється віджет;
sticky ("n", "s", "e", "w" або їхня комбінація) — вказує, до якої межі «приклеювати» віджет. Дозволяє розширювати віджет у вказаному напрямку. Межі названо відповідно до сторін світу:
"n" (північ) — верхня межа;
"s" (південь) — нижня;
"w" (захід) — ліва;
"e" (схід) — права.
in_ — явна вказівка на те, в якій батьківський віджет потрібно розташувати даний віджет.
Додаткові методи віджетів для роботи з пакувальником grid:
grid_configure — синонім для grid;
grid_slaves (синонім slaves) — повертає список всіх дочірніх запакованих віджетів;
grid_info — повертає інформацію про конфігурацію пакування;
grid_propagate (синонім propagate) — (True / False) — включає / відключає поширення інформації про геометрію дочірніх віджетів. Як усталено віджет змінює свій розмір відповідно до розміру своїх нащадків. Цей метод може відключити таку поведінку — pack_propagate(False). Це може бути корисно, якщо необхідно, щоб віджет мав фіксований розмір і не змінював його за примхою нащадків;
grid_forget (синонім forget) — видаляє віджет і всю інформацію про його розташування з пакувальника. Пізніше цей віджет може бути знову розміщений.
grid_remove — видаляє віджет з-під керування пакувальником, але зберігає інформацію про пакування. Цей метод зручно використовувати для тимчасового видалення віджета.
grid_bbox (синонім bbox) — повертає координати (у пікселях) зазначених стовпців і рядків.
grid_location (синонім location) — приймає два аргументи-координати: x і y (у пікселях). Повертає номер рядка і стовпця, в які потрапляє точка із зазначеними координатами, або -1, якщо точка поза віджетом.
grid_size (синонім size) — повертає розмір таблиці в рядках і стовпцях.
grid_columnconfigure (синонім columnconfigure) / grid_rowconfigure (синонім rowconfigure) — функції для конфігурування пакувальника. Методи приймають номер рядка / стовпчика і аргументи конфігурації. Список можливих аргументів такий:
minsize — мінімальна ширина / висота рядка / стовпчика;
weight — «вага» рядка / стовпчика при збільшенні розміру віджета. 0 означає, що рядок / стовпчик не буде розширено. Рядок / стовпчик з "вагою" k буде розширено у k разів швидше, ніж з вагою 1;
uniform — об'єднання рядків / стовпчиків у групи. Рядки / стовпчики, що мають однаковий параметр uniform, буде розширено строго у відповідності зі своїм вагою;
pad — розмір межі (бордюру) — вказує на те, скільки простору буде додано до найбільшого віджету в рядку / стовпчику.
Приклади використання:
place є простим пакувальником, що дозволяє розміщувати віджет в фіксованому місці з фіксованим розміром. Також він дозволяє вказувати координати розміщення в відносних одиницях для реалізації "гумового" розміщення. При використанні цього пакувальника, необхідно вказувати координати кожного віджета.
Аргументи place
anchor (зі значеннями "n", "s", "e", "w", "ne", "nw", "se", "sw" або "center") — вказівка на те, який кут або яку сторону віджета буде вказано в аргументах x, y, relx, rely. Як усталено "nw" — лівий верхній кут;
bordermode (зі значеннями "inside", "outside", "ignore") — визначає, в якій мірі буде враховано межі при розміщенні віджета;
in_ — явна вказівка на те, в який батьківський віджет буде вкладено даний;
x і y — абсолютні координати (у пікселях) розташування віджету;
width і height — абсолютні ширина і висота віджету;
relx і rely — відносні координати (від 0.0 до 1.0) розташування віджета;
relwidth і relheight — відносні ширина і висота віджету.
Додаткові методи віджетів для роботи з пакувальником place:
place_slaves, place_forget, place_info — див. опис аналогічних методів пакувальника pack.
Для більш складних розміщень використовують допоміжний віджет Frame.