Spec-Zone.ru › Python 3.14

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

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

Spec-Zone.ru

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