Spec-Zone.ru › Python 3.13

Часто задаваемые вопросы о графическом интерфейсе пользователя

  • Общие вопросы о графическом интерфейсе
  • Какие наборы инструментов для графического интерфейса существуют для Python?
  • Вопросы о Tkinter

    • Как создать автономное приложение Tkinter?
    • Можно ли обрабатывать события Tk во время ожидания ввода-вывода?
    • Почему привязки клавиш не работают в Tkinter?

Общие вопросы о графическом интерфейсе

Какие наборы инструментов для графического интерфейса существуют для 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API