Spec-Zone.ru › Python 3.13

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

  • Общие вопросы по GUI
  • Какие средства разработки GUI существуют для Python?
  • Вопросы по Tkinter

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

Общие вопросы по GUI

Какие средства разработки GUI существуют для Python?

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

В зависимости от целевых платформ есть и несколько альтернатив. Список кроссплатформенных и платформоспецифичных фреймворков GUI можно найти на странице Python wiki.

Вопросы по Tkinter

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

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

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

Различные сторонние библиотеки для заморозки, такие как py2exe и cx_Freeze, имеют встроенную поддержку приложений Tkinter.

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

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

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

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

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

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

Spec-Zone.ru

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