Навчальний курс: Tkinter. Програмування GUI на Python, Parkhomenko Olena

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Hello tkinter cartoon.png

Курс "Tkinter. Програмування GUI на Python"

знайомить з особливостями створення графічного інтерфейсу користувача засобами пакета tkinter мови програмування Python. Вимагає знання мови Python на рівні структурного програмування, бажано також володіння азами ООП.

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

Розглядаються різні варіанти розміщення віджетів в батьківському вікні: простою упаковкою відносно один одного, за допомогою таблиці і за допомогою розміщення координат. Дані способи компонування присутні в багатьох інших інструментах програмування GUI. Вивчаються вигляд стартового вікна програми і діалогові вікна. Курс побудований від простого до складного, "проблеми" вирішуються у міру їх появи.


Вікно.png

Що таке Tkinter

Tkinter - це пакет для Python, призначений для роботи з бібліотекою Tk. Бібліотека Tk містить компоненти графічного інтерфейсу користувача (graphical user interface - GUI), написані на мові програмування Tcl.

Під графічним інтерфейсом користувача (GUI) маються на увазі всі ті вікна, кнопки, текстові поля для введення, скролери, списки, радиокнопки, прапорці та ін., Які ви бачите на екрані, відкриваючи ту чи іншу програму. Через них ви взаємодієте з програмою і керуєте нею. Всі ці елементи інтерфейсу разом будемо називати віджетами (widgets).

В даний час майже всі програми, які створюються для кінцевого користувача, мають GUI. Рідкісні програми, які передбачають взаємодію з людиною, залишаються консольними. У попередніх двох курсах ми писали тільки консольні програми.

Існує безліч бібліотек GUI. Tk далеко не найпопулярніша, хоча з її використанням написано чимало проектів. Однак по ряду причин вона була обрана для Python за замовчуванням. Установчий файл Пітона зазвичай вже включає пакет tkinter в складі стандартної бібліотеки поряд з іншими модулями.

Не вдаючись в подробиці, Tkinter можна охарактеризувати як перекладач з мови Python на мову Tcl. Ви пишете програму на Python, а код модуля tkinter у вас за спиною переводить ваші інструкції на мову Tcl, який розуміє бібліотека Tk.

Додатки з графічним інтерфейсом користувача подієво-орієнтовані. Ви вже повинні мати уявлення про структурний і бажано об'єктно-орієнтованому програмуванні. Подієво-орієнтоване орієнтоване на події. Тобто та чи інша частина програмного коду починає виконуватися лише тоді, коли трапляється ту чи іншу подію.

Подієво-орієнтоване програмування базується на об'єктно-орієнтованому і структурному. Навіть якщо ми не створюємо власних класів та об'єктів, то все-одно ними користуємося. Всі віджети - об'єкти, породжені вбудованими класами.

Події бувають різними. Спрацював часовий чинник, хтось клікнув мишкою або натиснув Enter, почав вводити текст, перемкнув радіокнопки, прокрутив сторінку вниз і т. Д. Коли трапляється щось подібне, то, якщо був створений відповідний обробник, відбувається спрацьовування певної частини програми, що приводить до якого-небудь результату.

Tkinter імпортується стандартно для модуля Python будь-яким із способів: import tkinter, from tkinter import *, import tkinter as tk. Можна імпортувати окремі класи, що робиться рідко. В даному курсі буде в основному використовуватися from tkinter import *.

Tkinter-menu-bar.jpg

Далі, щоб написати GUI-програму, треба виконати приблизно наступне:

  1. Створити головне вікно.
  2. Створити віджети і конфігурувати їх властивостей (опцій).
  3. Визначити події, тобто те, на що буде реагувати програма.
  4. Визначити обробники подій, тобто те, як буде реагувати програма.
  5. Розташувати віджети в головному вікні.
  6. Запустити цикл обробки подій.
  7. Послідовність не обов'язково така, але перший і останній пункти завжди залишаються на своїх місцях. Подивимося все це в дії.

В сучасних операційних системах будь користувальницький додаток укладено в вікно, яке можна назвати головним, так як в ньому розташовуються всі інші віджети. Об'єкт вікна верхнього рівня створюється від класу Tk модуля tkinter. Змінну, зв'язувану з об'єктом, часто називають root (корінь):

root = Tk()

Нехай у вікні програми розташовуються текстове поле (entry), мітка (label) і кнопка (button). Дані об'єкти створюються від відповідних класів модуля tkinter. Ми відразу сконфігуріруем деякі їх властивості за допомогою передачі аргументів конструкторам цих класів:

e = Entry ( root , width = 20 )

b = Button ( root , text = "Перетворити" )

l = Label ( root , bg = 'black' , fg = 'white' , width = 20 )

Віджети Button, Label, Entry

У цьому уроці розглянемо докладніше три найбільш простих і популярних віджета GUI - кнопку, мітку і однорядкове текстове поле. У tkinter об'єкти цих елементів інтерфейсу породжуються відповідно від класів Button, Label і Entry.

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

У Tkinter існує три способи конфігурації властивостей віджетів: в момент створення об'єкту, за допомогою методу config (), він же configure (), шляхом звернення до властивості як до елементу словника.