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()

Результат:

Вікно із застосованими параметрами вище
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Назар Будзак
Назар Будзак@naz95naz

Опис

2.2KПрочитань
4Автори
10Читачі
Підтримати
На Друкарні з 15 квітня

Більше від автора

Вам також сподобається

  • Хто такий фронтенд-розробник? Путівник початківця

    В сучасному цифровому світі, де інтернет відіграє все більшу роль, професія фронтенд-розробника стає все більш затребуваною. Ці спеціалісти відповідають за те, що бачать і з чим взаємодіють користувачі на веб-сайтах та веб-додатках.

    Теми цього довгочиту:

    Frontend
  • Майбутнє фронтенду — Пайтон?🤔

    PyWeb - фронтенд фреймворк, написаний на Пайтоні, мого авторства 🤓 Щоб запускати Пайтон в браузері використовується Pyodide та WebAssembly

    Теми цього довгочиту:

    Python
  • Функціональна залежність у БД

    Пост про функціональну залежність в реляційних множинах. Визначення. Повторення значень в атрибуті. Приклад з п'ятьма атрибутами. Тривіальна залежність. Замикання. залежностей та атрибутів. Незвідні множини. Використання

    Теми цього довгочиту:

    Програмування

Коментарі (2)

Вітаю! Вашу роботу опубліковано в Twitter та на Facebook Друкарні.

🔸https://www.facebook.com/drukarniaua

🔸https://twitter.com/drukarniaua

Ваш довгочит дуже цікавий! 🫶

Вам також сподобається

  • Хто такий фронтенд-розробник? Путівник початківця

    В сучасному цифровому світі, де інтернет відіграє все більшу роль, професія фронтенд-розробника стає все більш затребуваною. Ці спеціалісти відповідають за те, що бачать і з чим взаємодіють користувачі на веб-сайтах та веб-додатках.

    Теми цього довгочиту:

    Frontend
  • Майбутнє фронтенду — Пайтон?🤔

    PyWeb - фронтенд фреймворк, написаний на Пайтоні, мого авторства 🤓 Щоб запускати Пайтон в браузері використовується Pyodide та WebAssembly

    Теми цього довгочиту:

    Python
  • Функціональна залежність у БД

    Пост про функціональну залежність в реляційних множинах. Визначення. Повторення значень в атрибуті. Приклад з п'ятьма атрибутами. Тривіальна залежність. Замикання. залежностей та атрибутів. Незвідні множини. Використання

    Теми цього довгочиту:

    Програмування