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