Tkinter
| Tkinter | |
|---|---|
| Редактор IDLE | |
| Тип | библиотека функций, Python-библиотека[вд] и свободное и открытое программное обеспечение |
| Разработчик | Джон Аустерхаут |
| Написана на | Python |
| Лицензия | Python License |
| Сайт | wiki.python.org/m… (англ.) |
Tkinter (от англ. Tk interface) — кросс-платформенная событийно-ориентированная графическая библиотека на основе средств Tk (широко распространённая в мире GNU/Linux и других UNIX‐подобных систем, портирована также и на Microsoft Windows), написанная Стином Лумхольтом (Steen Lumholt) и Гвидо ван Россумом[1]. Входит в стандартную библиотеку Python.
Tkinter — это свободное программное обеспечение, распространяемое под лицензией Python License[2].
Назначение
[править | править код]Библиотека предназначена для организации диалогов в программе с помощью оконного графического интерфейса (GUI). В составе библиотеки присутствуют общие графические компоненты:
- Toplevel/Tk — Окно верхнего уровня (корневой виджет).
- Frame — Рамка. Содержит в себе другие визуальные компоненты, используется для группировки виджетов.
- Label — Метка. Показывает некоторый текст или графическое изображение.
- Entry — Однострочное поле ввода текста.
- Text — Форматируемое поле ввода текста. Позволяет показывать, редактировать и форматировать текст с использованием различных стилей, а также внедрять в текст рисунки и окна.
- Canvas — Холст. Может использоваться для вывода графических примитивов, таких как прямоугольники, эллипсы, линии, а также текст, изображения и окна.
- Button — Кнопка. Простая кнопка для выполнения команды и других действий.
- Radiobutton — Переключатель. Представляет одно из альтернативных значений некоторой переменной. Обычно действует в группе. Когда пользователь выбирает какую-либо опцию, с ранее выбранного в этой же группе элемента выбор снимается.
- Checkbutton — Флажок. Похож на Radiobutton, но имеет возможность множественного выбора, предоставляя отдельную переменную на каждый экземпляр виджета.
- Scale — Шкала с ползунком. Позволяет задать числовое значение путём перемещения движка.
- Listbox — Список. Показывает список, из которого пользователь может выделить один или несколько элементов.
- Scrollbar — Полоса прокрутки. Может использоваться вместе с некоторыми другими компонентами для их прокрутки.
- Menu — Меню. Служит для организации всплывающих (popup) и ниспадающих (pulldown) меню.
- Menubutton — Кнопка-меню. Используется для организации pulldown-меню.
- Message — Сообщение. Аналогично Label, но позволяет заворачивать длинные строки и легко меняет свой размер.
- OptionMenu - Выпадающий список. Позволяет пользователю выбрать один элемент из раскрывающегося перечня опций.
- Spinbox - Поле выбора со стрелками. Позволяет вводить значение вручную или циклически перебирать числа и строки кнопками «вверх»/«вниз».
- LabelFrame - Рамка с заголовком. Модификация виджета Frame, которая имеет текстовую метку и контур для визуальной группировки элементов.
- PanedWindow - Панель с разделителями. Контейнер, разделенный на подвижные области, размер которых пользователь может менять вручную.
Также следует отметить, что в Python присутствует набор дополнительных средств в следующих модулях:
Canvas — Холст. Двумерная область для рисования графических примитивов (линий, окружностей, многоугольников), вывода текста, отображения картинок и создания анимаций.
Dialog — Устаревший базовый модуль для создания стандартных диалоговых окон.
FileDialog — Старый модуль для создания окон навигации по файловой системе, выбора и сохранения файлов.
FixTk — Внутренний системный модуль для Windows, который автоматически настраивал пути к Tcl/Tk.
ScrolledText — Текстовое поле с прокруткой. Готовый виджет, объединяющий стандартное поле Text и вертикальный Scrollbar.
SimpleDialog — Старый модуль для создания простейших модальных окон для ввода текста или чисел.
Tix — Расширение Tkinter, содержащее продвинутый набор дополнительных виджетов.
Tkconstants — Модуль, содержащий глобальные системные константы Tkinter для позиционирования и выравнивания.
Tkdnd — Внешнее расширение для реализации механизма Drag-and-Drop (перетаскивания элементов мышью).
tkColorChooser — Старый модуль для вызова встроенного графического окна выбора цвета.
tkCommonDialog — Базовый родительский класс для всех стандартных диалоговых окон в старых версиях.
tkFileDialog — Альтернативное имя старого модуля для выбора и сохранения файлов.
tkFont — Модуль для работы со шрифтами, их настройки и создания кастомных стилей текста.
tkMessageBox — Старый модуль для вывода информационных окон, предупреждений и вопросов.
tkSimpleDialog — Внутренний модуль для запроса базовых данных, таких как строки, целые и вещественные числа.
turtle — Черепашья графика. Встроенный обучающий графический модуль, использующий Canvas для рисования с помощью команд управления.
Пример: программа Hello World
[править | править код]
from tkinter import *
root = Tk()
root.title("Hello World!")
root.geometry('300x40')
def button_clicked():
print("Hello World!")
def close():
root.destroy()
root.quit()
button = Button(root, text="Press Me", command=button_clicked)
button.pack(fill=BOTH)
root.protocol('WM_DELETE_WINDOW', close)
root.mainloop()
Разбор программы
Приведённый пример демонстрирует простейшее приложение GUI на Python. Первая строка программы импортирует модуль tkinter (до версии 3.1 языка Python название модуля tkinter писалось в коде с прописной буквы — «Tkinter»):
from tkinter import *
В результате импортирования в пространстве имён программы (скрипта) появляются имена, встроенные в Tkinter, к которым можно обращаться непосредственно. Необходимо заметить, что массовое импортирование имён может привести к их конфликту. Кроме того, для интерпретатора требуется больше времени, чтобы в списке доступных имён найти нужное.
Следующая команда создаёт корневое (root) окно программы (далее окно):
root = Tk()
Следующая команда меняет заголовок окна:
root.title("Hello World!")
Следующая команда устанавливает размеры окна:
root.geometry('300x40')
Далее следует определение функции-обработчика события «нажата кнопка мыши».
def button_clicked():
print("Hello World!")
Функция-обработчик события «закрытие главного окна». Она останавливает главный цикл приложения и разрушает главное окно. Без неё закрыть программу можно, лишь если завершить процесс интерпретатора Python. Поскольку функция использует глобальную переменную root, объявление самой функции должно следовать после объявления переменной root.
def close():
root.destroy()
root.quit()
Создаем кнопку с текстом «Press Me» и привязываем её к вышеопределенной функции-обработчику:
button = Button(root, text="Press Me", command=button_clicked)
«Упаковываем» созданную кнопку с помощью менеджера компоновки pack. fill=BOTH (также можно fill="both") указывает кнопке занимать все доступное пространство (по ширине и высоте) на родительском виджете root:
button.pack(fill=BOTH)
Привязываем событие закрытия главного окна с функцией-обработчиком close:
root.protocol('WM_DELETE_WINDOW', close)
Запускаем главный цикл приложения:
root.mainloop()
В результате нажатия кнопки в консоли будет выведено сообщение «Hello, World!». Сообщение будет выводиться каждый раз при нажатии кнопки.
См. также
[править | править код]Примечания
[править | править код]- ↑ Matt Conway, Tkinter Life Preserver Архивная копия от 31 мая 2016 на Wayback Machine (англ.)
- ↑ Tkinter Overview Архивировано 13 ноября 2013 года. (англ.)
Литература
[править | править код]- John E. Grayson. Python and Tkinter Programming. — Manning Publications, 1999. — 658 p. — ISBN 9781884777813.
- Сузи Р. А. Создание приложений с графическим интерфейсом пользователя // Язык программирования Python: Учебное пособие. — М.: Интуит, Бином. Лаборатория знаний, 2006. — 328 с. — ISBN 5-9556-0058-2.
Ссылки
[править | править код]- Официальный сайт (англ.)
- Документация (англ.)
- Fredrik Lundh. An Introduction to Tkinter. Дата обращения: 12 октября 2012. Архивировано 19 октября 2012 года.
- Школа Python/Tk (переводы на русский язык некоторых материалов по Python/Tkinter)
- Conway M. Спасательный круг для изучающих Tkinter. Дата обращения: 12 октября 2012. Архивировано 19 октября 2012 года.