Часто задаваемые вопросы о графическом интерфейсе пользователя
- Общие вопросы о графическом интерфейсе
- Какие наборы инструментов для графического интерфейса существуют для 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/faq/gui.html