Часто задаваемые вопросы о графическом интерфейсе
- Общие вопросы о графическом интерфейсе
- Какие наборы инструментов для создания графического интерфейса существуют для Python?
Общие вопросы о графическом интерфейсе
Какие наборы инструментов для создания графического интерфейса существуют для Python?
Стандартные сборки Python включают объектно-ориентированный интерфейс к набору виджетов Tcl/Tk, который называется tkinter. Вероятно, его проще всего установить (поскольку он входит в большинство бинарных дистрибутивов Python) и использовать. Дополнительную информацию о Tk, включая ссылки на исходный код, см. на главной странице Tcl/Tk. Tcl/Tk полностью переносим на платформы macOS, Windows и Unix.
В зависимости от платформы или платформ, для которых вы разрабатываете приложения, есть и несколько альтернатив. На вики Python можно найти список кроссплатформенных и платформо-зависимых библиотек для создания графического интерфейса.
Вопросы о Tkinter
Как упаковать приложения Tkinter в автономный исполняемый файл?
Freeze — это инструмент для создания автономных приложений. При упаковке приложений Tkinter они не будут полностью автономными, так как приложению по-прежнему потребуются библиотеки Tcl и Tk.
Один из вариантов — поставлять приложение вместе с библиотеками Tcl и Tk и указывать путь к ним во время выполнения с помощью переменных окружения TCL_LIBRARY и TK_LIBRARY.
В различных сторонних библиотеках для создания автономных приложений, таких как py2exe и cx_Freeze, предусмотрена встроенная поддержка приложений Tkinter.
Можно ли обрабатывать события Tk во время ожидания ввода-вывода?
На платформах, отличных от Windows, — да, и для этого даже не нужны потоки! Но вам придётся немного изменить структуру кода ввода-вывода. В Tk есть аналог вызова Xt XtAddInput(), который позволяет зарегистрировать функцию обратного вызова, вызываемую из главного цикла Tk, когда ввод-вывод становится возможным для файлового дескриптора. См. раздел Обработчики файлов.
Почему в Tkinter не работают привязки клавиш?
Часто можно услышать жалобу на то, что обработчики событий, привязанные к событиям с помощью метода bind(), не вызываются даже при нажатии соответствующей клавиши.
Самая распространённая причина — отсутствие «фокуса клавиатуры» у виджета, к которому применяется привязка. Ознакомьтесь с документацией Tk по команде focus. Обычно фокус клавиатуры передаётся виджету щелчком мыши по нему (но не меткам; см. параметр takefocus).
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/faq/gui.html