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

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

Бажаєте оволодіти багато-платформною графічною бібліотекою інтерфейсів на основі засобів Tk?

Тоді вам сюди!

Ми - творці майбутнього! Ми самі програмуємо своє життя, і лише від нас залежить наскільки яскравим воно буде!

Hello tkinter cartoon.png

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

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

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

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

приложения на Python c Tkinter #1 - Создание главного окна

приложения на Python c Tkinter #2- Создание дочернего окна

приложения на Python c Tkinter #3 - Добавление виджетов Treeview, Entry, ComboBox, Button

Контактна інформація про слухача курсу


Вікно.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 )

Що таке Tkinter.pdf
Screenshot 12.png


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

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

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

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

Button.pdf

Метод pack ()

Перш ніж продовжити знайомство з віджетами GUI зупинимося на питанні їх розташування у вікні. Це важливе питання, тому що від інтуїтивності інтерфейсу багато в чому залежить зручність використання програми. Організовуючи віджети в просторі, програміст частково стає дизайнером, розробником інтерфейсів. [1]

Screenshot 13.png

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

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

Повне викладення уроку з практичним завданням


Radiobutton і Checkbutton. змінні Tkinter

У Tkinter від класу Radiobutton створюються радиокнопки, від класу Checkbutton - прапорці. Радиокнопки не створюють по одній, а роблять пов'язану групу, яка працює за принципом перемикачів. Коли включена одна, інші вимкнені. Примірники Checkbutton також можуть бути візуально оформлені в групу, але кожен прапорець незалежний від інших. Кожен може бути в змозі "встановлено" або "знятий", незалежно від станів інших прапорців. Іншими словами, в групі Checkbutton можна зробити множинний вибір, в групі Radiobutton - немає.

Radiobutton і Checkbutton. змінні Tkinter

GUI приложения на Python c Tkinter #4 - Создание базы данных SQLite 3.


Віджет Listbox

Від класу Listbox створюються списки - віджети, всередині яких в стовпчик перераховуються елементи. При цьому можна вибирати один або безліч елементів списку. Віджет Listbox


Метод bind ()

У tkinter за допомогою методу bind () між собою зв'язуються віджет, подія і дія. Наприклад, віджет - кнопка, подія - клік по ній лівою кнопкою миші, дія - відправка повідомлення. Інший приклад: віджет - текстове поле, подія - натискання Enter, дія - отримання тексту з поля методом get () для подальшої обробки програмою. Дію оформляють як функцію (або метод), яка викликаються при настанні події.

Метод bind ()


Події

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

Можна виділити три основні типи подій: вироблені мишею, натисканнями клавіш на клавіатурі, а також події, що виникають в результаті зміни віджетів. Нерідко обробляються поєднання. Наприклад, клік мишею з затиснутою клавішею на клавіатурі.

Події


Canvas

У tkinter від класу Canvas створюються об'єкти-полотна, на яких можна "малювати", розміщуючи різні фігури і об'єкти. Робиться це за допомогою викликів відповідних методів.

Canvas