Spec-Zone.ru › Python 3.12

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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