Spec-Zone.ru › Python 3.10

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

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

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

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

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

Стандартные сборки Python включают объектно-ориентированный интерфейс к набору виджетов Tcl/Tk, называемый tkinter. Он, вероятно, является самым простым в установке (так как он входит в большинство двоичных дистрибутивов Python) и использовании. Более подробная информация о Tk, включая ссылки на исходный код, находится на домашней странице Tcl/Tk. Tcl/Tk полностью портируется на платформы macOS, Windows и Unix.

В зависимости от целевых платформ также существуют альтернативы. Список кроссплатформенных и платформоспецифичных наборов инструментов графического интерфейса можно найти на странице Python Wiki.

Вопросы по Tkinter

Как заморозить приложения Tkinter?

Freeze — это инструмент для создания автономных приложений. При заморозке приложений Tkinter приложения не будут по-настоящему автономными, поскольку приложение все равно будет нуждаться в библиотеках Tcl и Tk.

Одно из решений — предоставить приложение с библиотеками Tcl и Tk и указать на них во время выполнения с помощью переменных среды TCL_LIBRARY и TK_LIBRARY.

Для получения по-настоящему автономных приложений скрипты Tcl, составляющие библиотеку, необходимо интегрировать в приложение. Одним из инструментов, поддерживающих это, является SAM (автономные модули), который входит в дистрибутив Tix (https://tix.sourceforge.net/).

Скомпилируйте Tix с включенным SAM, выполните соответствующий вызов Tclsam_init(), и т. д. внутри Python’s Modules/tkappinit.c, и свяжите с libtclsam и libtksam (возможно, также включите библиотеки Tix).

Можно ли обрабатывать события Tk при ожидании ввода-вывода?

На платформах, отличных от Windows, да, и вам даже не нужны потоки! Но вам нужно немного перестроить код ввода-вывода. Tk имеет эквивалент вызова Xt’s XtAddInput(), который позволяет зарегистрировать функцию обратного вызова, которая будет вызвана из цикла Tk, когда возможен ввод-вывод на дескрипторе файла. См. Обработчики файлов.

Почему не работают привязки клавиш в Tkinter?

Частая жалоба заключается в том, что обработчики событий, привязанные к событиям с помощью метода bind(), не обрабатываются даже при нажатии соответствующей клавиши.

Наиболее частая причина заключается в том, что у виджета, к которому применяется привязка, нет «фокуса клавиатуры». Проверьте документацию Tk по команде focus. Обычно виджет получает фокус клавиатуры, нажав на него (но не для меток; см. параметр takefocus).

© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/faq/gui.html

Spec-Zone.ru

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