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