Tkinter — це біблітека з інструментами для створення графічного інтерфейсу користувача (GUI) на Python. Tkinter використовує об'єктноорієнтований підхід для створення віджетів, які є основними елементами GUI. Він є частиною стандартного набору бібліотек Python і поставляється разом з Python при його встановленні.
Tkinter має досить таки велику кількість різноманітних віджетів. Віджети — це об’єкти, такі як кнопки, мітки, повзунки, перемикачі, поля введення тощо, які дозволяють користувачеві взаємодіяти з програмою. Про них я розповім у наступних довгочитах.
У цьому довгочиті розповім про створення й налаштування вікна.
Початок роботи та створення вікна
Звісно, для початку роботи з бібліотекою Tkinter, потрібно імпортувати її:
import tkinter
Далі створюємо об’єкт класу Tk(), який і створює наше вікно.
window = tkinter.Tk()
Після цього створюємо глобальний цикл, щоб після запуску вікно залишалося на екрані.
tkinter.mainloop()
Отже, загальна програма створення віконечка виглядає так:
import tkinter
window = tkinter.Tk()
tkinter.mainloop()
Результатом запуску буде таке порожнє віконечко:
Методи вікна
Для створеного вище вікна можна використати методи, щоб його видозмінити та задати його поведінку. Ось перелік найуживаніших з них:
Назва методу | Опис |
---|---|
title() | Задає заголовок вікна |
geometry() | Задання розміру вікна |
minsize() | Задання мінімального розміру вікна |
maxsize() | Задання максимального розміру вікна |
iconbitmap() | Задання значка (іконки) вікна |
resizable() | Визначає, чи можна змінювати розміри у ширину і/або висоту |
config() | Задає параметри вікна, такі як колір тла, вигляд курсор у вікні, стилю рамки та іншого. |
destroy() | Закриття вікна |
bind() | Прив’язує подію з обробником цієї події, наприклад, реагування на натиснення клавіші. |
after() | Виконання функції через певний проміжок часу після запуску програми. |
protocol() | Прив’язування дії з події закриття вікна. Наприклад, виводити попередження про закриття. |
attributes() | Задання певних додаткових атрибутів вікна, як-от розміщення, прозорість тощо. |
lift() | Ставить вікно на передній план (над всіма іншими вікнами на екрані) |
lower() | Ставить вікно на задній план (під решту вікон на екрані) |
state() | Задає встановити стан вікна: розгорнути, згорнути, приховати та інші стани. |
focus_force() | Змінює фокус на вікно, до якого застосовано метод. При застосуванні методу, вікно стає активним для вводу, навіть якщо воно було неактивне раніше. |
grab_set() | Встановлює "захоплення" вікна, що означає спрямовування всіх подій вводу будуть до цього вікна, інші вікна не зможуть обробляти події вводу, поки вікно з захопленням не буде відпущено. |
Метод title()
Цей метод використовується для задання заголовку цього вікна. Приймає на вхід один параметр вигляді рядка (str), яке буде заголовком.
import tkinter
window = tkinter.Tk()
window.title('Заголовок віконця')
tkinter.mainloop()
Результат:
Метод geometry()
Цей метод дає змогу задавати розміри вікна та його відступ від меж екрана. Приймає на вхід рядок у такому форматі:
ВИСОТАxШИРИНА+ВІДСТУП_ЗЛІВА+ВІДСУТ_СПРАВА
import tkinter
window = tkinter.Tk()
# задання розмірів: висота х ширина + відступ_зліва + відступ справа
window.geometry("400x300+50+100")
tkinter.mainloop()
Метод minsize()
Задає мінімальний розмір вікна, коли користувач змінює його розмір вручну. Нижче цього значення користувач не зможе змінити розмір.
На вхід метода отримує такі два параметри:
width — мінімальна ширина вікна. Значення типу int (цілочисельне);
heigh — мінімальна висота вікна. Значення типу int (цілочисельне).
import tkinter
window = tkinter.Tk()
window.minsize(300, 150)
tkinter.mainloop()
Метод maxsize()
Аналогічно попередньому методу, цей метод задає вже максимальний розмір вікна, коли користувач змінює його розмір вручну. Більше цього значення користувач не зможе змінити розмір.
На вхід метода отримує такі два параметри:
width — максимальна ширина вікна. Значення типу int (цілочисельне);
heigh — максимальна висота вікна. Значення типу int (цілочисельне)
import tkinter
window = tkinter.Tk()
window.maxsize(width=500, height=700)
tkinter.mainloop()
Зауважу, ви можете використовувати як позиційні (просто значення як у minsize), так й іменовані параметри методу (як тут, у maxsize) — на ваш погляд.
Метод resizable()
Задає дозвіл чи заборону на змінення розміру користувачем за шириною і/або висотою.
На вхід метода отримує такі два параметри:
width — чи дозволити змінення ширини вікна. Значення типу bool (логічне). True — дозволити змінення, False — заборонити;
heigh — чи дозволити змінення висоти вікна. Значення типу bool (логічне). True — дозволити змінення, False — заборонити
import tkinter
window = tkinter.Tk()
window.resizable(False, False)
tkinter.mainloop()
Результатом буде повна заборона змінення розмірів як за шириною, так і висотою, і в результаті не буде змінюватися курсор на стрілочки на межі екрана.
Метод config()
Задання параметрів вікна.
На вхід приймає такі параметри:
bg або background: колір фону вікна. Рядкове значення str у форматі назви кольору (red, blue, green тощо) або hex-форматі (#004А3A);
bd або borderwidth: ширина рамки вікна. Цілочисельне значення int, яке означає ширину в пікселях;
cursor: тип курсора, який показується, коли вказівник миші перебуває над вікном. Рядкове значення str з назвою курсору. Наприклад, circle, turtle, pencil та інші;
height: висота вікна. Цілочисельне значення int, висота у пікселях;
width: ширина вікна. Цілочисельне значення int, ширина у пікселях;
highlightbackground: колір зовнішньої рамки вікна, коли воно не має фокусу. Рядкове значення str у форматі назви кольору (red, blue, green тощо) або hex-форматі (#004А3A);
highlightcolor: колір зовнішньої рамки вікна, коли воно має фокус. Рядкове значення str у форматі назви кольору (red, blue, green тощо) або hex-форматі (#004А3A);
highlightthickness: товщина зовнішньої рамки вікна. Цілочисельне значення int, яке означає товшину в пікселях;
relief: стиль рамки вікна. Рядкове значення str з назвою стилю, наприклад flat, groove, raised, ridge, solid або sunken;
takefocus: чи може вікно приймати фокус. Логічне значення bool: False — не може, True — може.
visual: візуальний стиль вікна. Рядкове значення str з назвою стилю, наприклад, default, gray, rcg, або mono. Працює після розміщення віджетів на вікні.
Приклад використання:
import tkinter
window = tkinter.Tk()
window.config(bg='#def9d3',
cursor="heart",
highlightcolor='#4ba626',
highlightthickness=4)
tkinter.mainloop()
Результат: