Урок:

Основи Tkinter

Вміст уроку:
1
2

Урок не містить жодного завдання. Додайте завдання.

Щоб додати завдання, оберіть категорію завдання на панелі запитань.

1

Багато програм на сьогоднішній день використовують графічний інтерфейс, який більш інтуїтивний та зручний для користувача, ніж консоль. І за допомогою мови програмування Python можна також створювати графічні програми. Для цього Python за замовчуванням застосовується спеціальний тулкіт - набір компонентів, який називається tkinter . Тулкіт tkinter доступний у вигляді окремого вбудованого модуля, який містить усі необхідні графічні компоненти - кнопки, текстові поля і т.д.

По суті Tkinter представляє інтерфейс Python для графічної бібліотеки Tk (Власне сама назва "Tkinter" є скороченням "Tk interface"). Спочатку дана бібліотека розроблялася для мови Tcl – її створив у 1988 році Джон Остерхаут (John Ousterhout), професор computer science з Берклі для створення графічних програм для своєї мови Tcl. Але згодом Tk була адаптована для широкого ряду динамічних мов, зокрема Ruby, Perl і природно для мови Python (1994 року). І на сьогоднішній день і бібліотека Tk, і сам тулкіт tkinter доступні для більшості операційних систем, у тому числі для Mac OS, Linux та Windows.

Переваги Tkinter:

  • За замовчуванням цей тулкіт включений до стандартної бібліотеки мови Python у вигляді окремого модуля, тому не потрібно щось додатково встановлювати.

  • Tkinter - кросплатформний, один і той же код працюватиме однаково на різних платформах (Mac OS, Linux та Windows)

  • Tkinter легко вивчити. Сам інструментарій, хоча й містить готовий код, віджети та графічні елементи, все ж досить лаконічний та простий.

  • Tk поширюється за BSD-ліцензією, тому бібліотека може бути використана як в опенсорсних проектах, так і в комерційних напрацюваннях.

Якщо необхідно або цікаво дізнатися версію бібліотеки Tk, яка використовуватиметься, в інтерпертаторі Python можна виконати таку інструкцію:

0901vm87-a27f-940x243.png

Перша програма

Створимо першу програму із використанням Tkinter. Для цього визначимо наступний скрипт:

0901vm9s-4766-940x203.png

Для створення графічного вікна застосовується конструктор Tk() , визначений у модулі tkinter. Створюване вікно надається змінної root, і через цю змінну ми можемо керувати атрибутами вікна. Зокрема, за допомогою методу title() можна встановити заголовок вікна.

За допомогою методу geometry() – розмір вікна. Для встановлення розміру метод geometry() передається рядок у форматі "Ширина x Висота". Якщо при створенні вікна програми метод geometry()не викликається, вікно займає той простір, який необхідний для розміщення внутрішнього вмісту.

Після створення вікна ми можемо розмістити в ньому інші графічні елементи. Ці елементи також називаються віджетами. У цьому випадку ми розміщуємо текстову мітку у вікні. Для цього ми створюємо об'єкт класу Label , який зберігає певний текст. Потім, щоб розмістити елемент мітки у вікні, ми викликаємо його метод.pack()

Для відображення вікна треба викликати в нього метод mainloop() , який запускає цикл обробки подій вікна взаємодії з користувачем.

В результаті при запуску скрипту ми побачимо таке порожнє віконце:

0901vmai-5958-762x714.png

Основним компонентом графічних програм є вікно. Потім у вікно додаються решта компонентів графічного інтерфейсу. У Tkinter вікно представлене класом Tk . Наприклад, створення вікна:

0901vmbe-5361-940x164.png

Клас Tk має низку методів та атрибутів, які дозволяють встановити різні аспекти вікна. Деякі їх.

Розміри та початкова позиція вікна

За замовчуванням вікно має деякі стандартні розміри. Для встановлення розмірів використовується метод geometry() . Наприклад, визначення вікна з шириною 300 одиниць і висотою 250 одиниць:

0901vmbt-7a6a-940x134.png

За замовчуванням вікно позиціонується у верхній лівий кут екрана з невеликим зміщенням. Але ми можемо змінити його положення, передавши потрібні значення метод geometry():

0901vmcb-a2e6-940x128.png

Тепер рядок у методі geometry має такий формат: "Ширина x Висота + координата X + координата Y". Тобто при запуску вікно шириною 300 одиниць і висотою 250 одиниць перебуватиме на 400 пікселів праворуч і 200 пікселів вниз від верхнього лівого кута екрана.

Для отримання даних про розмір та позицію також можна використовувати метод geometry() , який повертає дані значення у вигляді рядка у форматі "widthxheight+x+y":

0901vmd3-be80-940x178.png

Щоб додаток ще до методу mainloop()застосував для вікна передані йому значення по ширині, висоті та позиції, викликається метод root.update_idletasks(). У результаті виклик root.geometry()повернути рядок "300x250+400+200"

За умовчанням ми можемо змінювати розмір вікна. Проте іноді може знадобитися зробити розмір вікна фіксованим. І тут ми можемо використовувати метод resizable() . Його перший параметр вказує, чи користувач може розтягувати вікно по ширині, а другий параметр - чи можна розтягувати по висоті. Щоб заборонити розтягування на будь-якій стороні, необхідно для відповідного параметра передати значення False. Наприклад, заборонимо будь-яку зміну розмірів:

0901vmdx-780f-940x166.png

Також можна встановити мінімальні та максимальні розміри вікна:

0901vme8-8afd-940x61.png

Встановлення заголовка

За промовчанням заголовок вікна - "tk". Для встановлення заголовка застосовується метод title() , який передається текст заголовка:

0901vmeo-0f49-940x128.png

Набір іконок

Перед заголовком відображається значок. За промовчанням це іконка пера. За допомогою методу iconbitmap() можна встановити будь-яку іншу іконку. Наприклад, визначимо в одній папці з файлом програми якийсь файл з іконкою, допустип, він називається "favicon.ico" і використовуємо його для встановлення іконки:

0901vmhd-a638-940x132.png

Атрибути вікна

За допомогою спеціального методу attributes() можна встановити окремі атрибути вікна, для яких немає спеціальних методів. В якості першого параметра метод приймає назву атрибуту, який передує дефісом. А другий параметр – значення для цього атрибуту. Наприклад, розтягування вікна на весь екран:

0901vmk7-1498-940x271.png

Введення у віджети. Tk та ttk

Ключовим будівельним блоком у графічному додатку є різні елементи управління, з якими взаємодіє користувач, як кнопки, мітки, поля введення. Tkinter має багату палітру різних елементів управління, які називаються віджетами . Основні з них:

  • Button : кнопка

  • Label : текстова мітка

  • Entry : однорядкове текстове поле

  • Text : багаторядкове текстове поле

  • Checkbutton : прапорець

  • Radiobutton : перемикач або радіокнопка

  • Frame : кадр, який організовує віджети в групи

  • Listbox : список

  • Combobox : список, що випадає

  • Menu : елемент меню

  • Scrollbar : смуга прокручування

  • Treeview : дозволяє створювати деревоподібні та табличні елементи

  • Scale : текстова мітка

  • Spinbox : список значень зі стрілками для переміщення елементами

  • Progressbar : текстова мітка

  • Canvas : текстова мітка

  • Notebook : панель вкладок

    Tkinter надає віджети у двох варіантах: віджети, які знаходяться безпосередньо в пакеті tkinter , і віджети з пакету tkinter.ttk . З одного боку, обидва пакети надають практично ті самі віджети, наприклад, віджет Button є в обох пакетах. Але з іншого боку, ttk надає трохи більше функціональності налаштування віджетів, зокрема, їх стилізації. І вважається, що віджети з ttk дещо сучасніші, ніж стандартні, в той же час з ttk, можливо, трохи складніше працювати. Що використовувати залишається на вибір розробника.

    Розглянемо різницю на прикладі віджету Button. Спочатку подивимося на стандартний віджет Button із загального пакету tkinter :

    0901vmnz-eba7-940x191.png

    Тепер подивимося на прикладі кнопки з пакету ttk :

    0901vmoo-b7dc-940x204.png

    Параметри віджету

    Віджет має набір параметрів, які дозволяють налаштувати його зовнішній вигляд і поведінку. Кожен віджет має свій набір параметрів. Зазвичай параметри задаються через конструктор. Наприклад, у прикладі вище кнопки встановлювався параметр text, який задає текст на кнопці:

    0901vmq6-c9bb-940x376.png

    Кнопки

    Одним із найбільш використовуваних компонентів у графічних програмах є кнопка. У tkinter кнопки представлені класом Button . Основні параметри віджету Button:

    • command : функція, що викликається при натисканні на кнопку

    • compund : встановлює розташування картинки та тексту щодо один одного

    • cursor : курсор покажчика миші при наведенні на мітку

    • image : посилання на зображення, що відображається на мітці

    • pading : відступи від кордонів вилжета до тексту

    • state : стан кнопки

    • text : встановлює текст мітки

    • textvariable : встановлює прив'язку до елемента StringVar

    • width : ширина віджету

    Додамо у вікно звичайну кнопку з пакету ttk:

    0901vms6-cc44-940x223.png

    Для створення кнопки використовується конструктор Button() . У цьому архітекторі за допомогою параметра text можна встановити текст кнопки.

    Конструктор Button визначає різні параметри, які дозволяють налаштувати поведінку та зовнішній вигляд кнопки. Однак конкретний набір параметрів залежить від того, чи ми використовуємо кнопки з пакету tkinter або з пакету tkinter.ttk.

    Обробка натискання на кнопку

    Для обробки натискання на кнопку необхідно встановити в конструкторі параметр command , надавши йому посилання на функцію, яка спрацьовуватиме при натисканні:

    0901vmwo-f6f0-940x358.png

    Тут як обробник натискання встановлюється функція click_button. У цій функції змінюється глобальна змінна clicks, яка зберігає кількість кліків. Крім того, змінюємо текст кнопки, щоб візуально було видно скільки натискань зроблено. Таким чином, при кожному натисканні кнопки спрацьовуватиме функція click_button, і кількість кліків збільшуватиметься.

    Вимкнення кнопки

    Для ttk-кнопки ми можемо встановити відключений стан за допомогою методу state() , передавши значення "disabled". З такою кнопкою користувач не зможе взаємодіяти:

    0901vmxm-714f-940x210.png

2

12 з 12 балів

Завдання 1 — Перше графічне вікно

Умова

Створіть програму, яка:

  • відкриває графічне вікно;

  • встановлює заголовок;

  • задає розмір вікна;

  • забороняє зміну розміру;

  • виводить текстову мітку.

    0901vn06-c207-786x440.png

Рефлексія від 1 учня

Сподобався:

0

Так: 1

Ні: 0

Зрозумілий:

0

Так: 1

Ні: 0

Потрібні роз'яснення:

0

Ні: 1

Так: 0

Рекомендуємо

§ 10. Графічні методи модуля tkinter

§ 10. Графічні методи модуля tkinter

481

Аватар профіля Киреєва Оксана Анатоліївна
Інформатика
7 клас

50 грн

Основи колористики.

Основи колористики.

165

Аватар профіля Кучерява Наталія Геннадіївна
Технології
10—12 клас та I—III курси

83 грн

74 грн

Тематична робота з інформатики "Основи інформаційної безпеки"

Тематична робота з інформатики "Основи інформаційної безпеки"

164

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9 клас

25 грн

Основи статистичного аналізу даних. Ряди даних.

Основи статистичного аналізу даних. Ряди даних.

92

Аватар профіля Бєлова Тетяна Іванівна
Інформатика
10 клас

35 грн

Урок 2: Основи HTML — Структура вебсторінки

Урок 2: Основи HTML — Структура вебсторінки

64

Аватар профіля Нікішина Катерина Іванівна
Інформатика
7—12 клас, I—VI курси, дорослі та змішані

41 грн

Основи теорії дизайну. Стиль та композиція в дизайні

Основи теорії дизайну. Стиль та композиція в дизайні

446

Аватар профіля Куленко Марія Миколаївна
Інформатика
11 клас

20 грн

Схожі уроки

Впорядкування, пошук і фільтрування даних.

Впорядкування, пошук і фільтрування даних.

1276

Аватар профіля Вожга Ірина Леонідівна
Інформатика
9 клас

Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.

Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.

1090

Аватар профіля Савка-Ржематорська Оксана Василівна
Інформатика
9 клас

Цикли з передумовою у вкладених циклах

Цикли з передумовою у вкладених циклах

1335

Аватар профіля Вожга Ірина Леонідівна
Інформатика
6 клас

Налаштування часових параметрів аудіо- та відеоряду.

Налаштування часових параметрів аудіо- та відеоряду.

489

Аватар профіля Солодовнікова Катерина Олексіївна
Інформатика
8 клас

Елемент керування «кнопка». Поняття об’єкту та його властивостей і методів (на прикладі елементів екранної форми). Властивості і методи елементів керування.

Елемент керування «кнопка». Поняття об’єкту та його властивостей і методів (на прикладі елементів екранної форми). Властивості і методи елементів керування.

642

Аватар профіля Пилипенко Олена Володимирівна
Інформатика
8 клас

Елемент керування кнопка

Елемент керування кнопка

267

Аватар профіля Пилипенко Олена Володимирівна
Інформатика
8 клас