В следующих разделах представлена более подробная информация о разных библиотеках для создания графического интерфейса для Python, они сгруппированы по лежащему в их основе тулкиту.
Tk Модуль стандартной библиотеки Tkinter — это тонкий объектно-ориентированный слой, покрывающий Tk, библиотеку виджетов, написанную на языке Tcl. (Вместе они выглядят как Tcl/Tk[83].) Поскольку модуль находится в стандартной библиотеке, он является наиболее удобным и совместимым GUI-тулкитом в нашем списке. Tk и Tkinter доступны на большинстве платформ Unix, а также в Windows и OS X.
На ресурсе TkDocs имеется хорошее руководство по Tk на нескольких языках, содержащее примеры на Python; более подробная информация представлена по адресу http://wiki.python.org/moin/TkInter.
Если у вас есть стандартный дистрибутив Python, у вас должен быть IDLE, графическая интерактивная среда для программирования, написанная исключительно на Python. Она является частью стандартной библиотеки — вы можете запустить ее из командной строки, введя команду idle, или просмотреть ее исходный код. Вы можете найти место, где она установлена, введя следующую команду в оболочке:
$ python — c" import idlelib; print(idlelib.__path__[0])"
В нашем каталоге много файлов, основное приложение IDLE запускается из модуля PyShell.py.
Аналогично для того, чтобы просмотреть пример использования интерфейса для рисования, tkinter.Canvas, взгляните на код модуля turtle. Вы можете найти его, введя следующую команду в оболочке:
$ python — c" import turtle; print(turtle.__file__)"
Kivy
Kivy (http://kivy.org/) — это библиотека Python, предназначенная для разработки мультимедиа приложений с поддержкой технологии мультитач. Kivy активно разрабатывается сообществом, имеет разрешительную лицензию в стиле BSD и работает на всех крупных платформах (Linux, OS X, Windows и Android).
Kivy написан на Python и не использует тулкит для работы с окнами, взаимодействует непосредственно с SDL2 (Simple DirectMedia Layer) (https://www.libsdl.org/), библиотекой, написанной на C, которая предоставляет низкоуровневый доступ к устройствам ввода пользователя[84] и аудио, а также имеет доступ к отрисовке 3D-изображений с помощью OpenGL (или Direct3D для Windows). Имеет несколько виджетов (находятся в модуле kivy.uix — https://kivy.org/docs/api-kivy.uix.html), но их не так много, как в наиболее популярных альтернативах вроде Qt и GTK. Если вы разрабатываете традиционное десктопное приложение для бизнеса, больше подойдут Qt или GTK.
Для того чтобы установить библиотеку, перейдите на страницу загрузки Kivy https://kivy.org/#download, найдите свою операционную систему, загрузите ZIP-файл для своей версии Python и следуйте инструкциям для вашей ОС. Помимо кода поставляется и каталог с десятком примеров, которые показывают разные части API.
Qt Qt (произносится «кьют») (http://qt-project.org/) — это кросс-платформенный фреймворк, который широко применяется для разработки графического ПО, но его можно использовать и для разработки приложений без графики. Существует версия Qt5 для Android (http://doc.qt.io/qt-5/android-support.html). Если у вас уже установлен Qt (если вы работаете с Spyder, Eric IDE, Matplotlib или с другим инструментом, использующим Qt), вы можете узнать свою версию Qt из командной строки, введя следующую команду:
83
Tcl (https://www.tcl.tk/about/language.html) (изначально назывался Tool Command Language — командный язык инструментов) — это легковесный язык, созданный Джоном Аустерхаутом (John Ousterhout) (http://web.stanford.edu/~ouster/cgi-bin/tclHistory.php) в начале 1990-х годов для проектирования интегральных цепей.
84
В дополнение к поддержке мыши может обрабатывать прикосновения: TUIO (http://www.tuio.org/) (протокол и API с открытым исходным кодом для обработки прикосновений), Wii remote от Nintendo, WM_TOUCH (API, позволяющий работать с прикосновениями, для Windows), USB-тачскрины, использующие продукты HidTouch (https://sourceforge.net/projects/hidtouchsuite/) от Apple, и др. (https://kivy.org/docs/api-kivy.input.providers.html).