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