Разработка GUI на Python с Tkinter: подробное руководство
Варианты разработки GUI в Python
Python предоставляет различные варианты для разработки графических пользовательских интерфейсов (GUI). Наиболее важные:
Tkinter — интерфейс Python к инструментарию Tk GUI, поставляемому с Python. Этот вариант рассматривается в данной главе.
wxPython — открытый интерфейс Python для wxWindows (https://wxpython.org).
JPython (Jython) — порт Python для Java, дающий скриптам Python бесшовный доступ к библиотекам классов Java на локальной машине (https://www.jython.org).
Существует множество других интерфейсов, которые можно найти в сети.
Программирование с Tkinter
Tkinter — стандартная GUI-библиотека для Python. Python в сочетании с Tkinter обеспечивает быстрый и легкий способ создания GUI-приложений. Tkinter предоставляет мощный объектно-ориентированный интерфейс к инструментарию Tk GUI.
Создание GUI-приложения с Tkinter — простая задача. Нужно выполнить следующие шаги:
Импортировать модуль
Tkinter.Создать главное окно GUI-приложения.
Добавить один или более виджетов в приложение.
Войти в главный цикл событий для обработки каждого события, инициированного пользователем.
Пример: минимальное приложение
#!/usr/bin/python
import Tkinter
top = Tkinter.Tk()
# Код для добавления виджетов будет здесь...
top.mainloop()
Это создаст следующее окно:

Виджеты Tkinter
Tkinter предоставляет различные элементы управления: кнопки, метки, текстовые поля, используемые в GUI-приложении. Эти элементы обычно называются виджетами.
В настоящее время в Tkinter есть 19 типов виджетов. Представляем их с кратким описанием:
| № | Виджет и описание |
|---|---|
| 1 | Button — отображает кнопки в приложении. |
| 2 | Canvas — рисует фигуры: линии, овалы, полигоны, прямоугольники. |
| 3 | Checkbutton — отображает варианты как флажки. Пользователь может выбрать несколько вариантов одновременно. |
| 4 | Entry — однострочное текстовое поле для ввода значений пользователем. |
| 5 | Frame — контейнер для организации других виджетов. |
| 6 | Label — однострочная подпись для других виджетов. Может содержать изображения. |
| 7 | Listbox — список вариантов для пользователя. |
| 8 | Menubutton — отображает меню в приложении. |
| 9 | Menu — предоставляет различные команды пользователю. Команды содержатся внутри Menubutton. |
| 10 | Message — многострочные текстовые поля для ввода значений. |
| 11 | Radiobutton — варианты как переключатели (radio buttons). Пользователь может выбрать только один вариант. |
| 12 | Scale — слайдер (ползунок). |
| 13 | Scrollbar — добавляет прокрутку к виджетам, таким как списки. |
| 14 | Text — отображает текст в нескольких строках. |
| 15 | Toplevel — отдельный контейнер окна. |
| 16 | Spinbox — вариант Entry, позволяющий выбирать из фиксированного набора значений. |
| 17 | PanedWindow — контейнер, который может содержать любое количество панелей, расположенных горизонтально или вертикально. |
| 18 | LabelFrame — простой контейнер. Основная цель — выступать разделителем или контейнером для сложных компоновок окон. |
| 19 | tkMessageBox — модуль для отображения диалоговых окон с сообщениями. |
Изучим эти виджеты подробнее.
Стандартные атрибуты
Посмотрим, как указываются общие атрибуты: размеры, цвета, шрифты.
Размеры (Dimensions)
Цвета (Colors)
Шрифты (Fonts)
Якоря (Anchors)
Стили рельефа (Relief styles)
Растровые изображения (Bitmaps)
Курсоры (Cursors)
Кратко рассмотрим их.
Управление геометрией (Geometry Management)
Все виджеты Tkinter имеют доступ к специфическим методам управления геометрией, цель которых — организация виджетов в области родительского виджета. Tkinter предоставляет следующие классы менеджеров геометрии: pack, grid и place.
Метод pack() — организует виджеты в блоках перед размещением в родительском виджете.
Метод grid() — организует виджеты в таблицеподобной структуре в родительском виджете.
Метод place() — организует виджеты, помещая их в конкретную позицию в родительском виджете.
Изучим методы управления геометрией кратко.
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Словари в Python: создание, манипуляции и продвинутые техники
- Объектно-ориентированное программирование в Python: классы, наследование, инкапсуляция и полиморфизм
- Итераторы в Python: как они работают и как создать свои
- Замыкания в Python: как вложенные функции захватывают переменные
- Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
- Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры