Документация Python неофициальный перевод

gui.md

89 строк · 10.7 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/faq/gui.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [FAQ по графическому интерфейсу пользователя](https://python-all.ru/2.7/faq/gui.html#id1)89Содержание1011- [Часто задаваемые вопросы о графическом интерфейсе пользователя](https://python-all.ru/2.7/faq/gui.html#graphic-user-interface-faq)1213  - [Какие существуют кроссплатформенные GUI-инструментарии для Python?](https://python-all.ru/2.7/faq/gui.html#what-platform-independent-gui-toolkits-exist-for-python)1415    - [Tkinter](https://python-all.ru/2.7/faq/gui.html#tkinter)16    - [wxWidgets](https://python-all.ru/2.7/faq/gui.html#wxwidgets)17    - [Qt](https://python-all.ru/2.7/faq/gui.html#qt)18    - [Gtk+](https://python-all.ru/2.7/faq/gui.html#gtk)19    - [FLTK](https://python-all.ru/2.7/faq/gui.html#fltk)20    - [OpenGL](https://python-all.ru/2.7/faq/gui.html#opengl)21  - [Какие существуют платформозависимые GUI-инструментарии для Python?](https://python-all.ru/2.7/faq/gui.html#what-platform-specific-gui-toolkits-exist-for-python)22  - [Вопросы по Tkinter](https://python-all.ru/2.7/faq/gui.html#tkinter-questions)2324    - [Как заморозить приложения Tkinter?](https://python-all.ru/2.7/faq/gui.html#how-do-i-freeze-tkinter-applications)25    - [Можно ли обрабатывать события Tk во время ожидания ввода-вывода?](https://python-all.ru/2.7/faq/gui.html#can-i-have-tk-events-handled-while-waiting-for-i-o)26    - [Не удаётся заставить работать привязки клавиш в Tkinter: почему?](https://python-all.ru/2.7/faq/gui.html#i-can-t-get-key-bindings-to-work-in-tkinter-why)2728## [Какие кроссплатформенные инструментарии GUI существуют для Python?](https://python-all.ru/2.7/faq/gui.html#id2)2930В зависимости от целевой платформы (платформ) существует несколько.3132### [Tkinter](https://python-all.ru/2.7/faq/gui.html#id3)3334Стандартные сборки Python включают объектно-ориентированный интерфейс к набору виджетов Tcl/Tk, называемый Tkinter. Вероятно, это самый простой способ установки и использования. Для получения дополнительной информации о Tk, включая указатели на исходный код, посетите домашнюю страницу Tcl/Tk по адресу [https://www.tcl.tk](https://python-all.ru/2.7/faq/gui.html). Tcl/Tk полностью переносим на платформы Mac OS X, Windows, и Unix.3536### [wxWidgets](https://python-all.ru/2.7/faq/gui.html#id4)3738wxWidgets ([https://www.wxwidgets.org](https://python-all.ru/2.7/faq/gui.html)) – это бесплатная переносимая библиотека классов для создания GUI, написанная на C++. Она обеспечивает нативный внешний вид на многих платформах, включая Windows, Mac OS X, GTK, X11; все они указаны как текущие стабильные целевые платформы. Для многих языков, включая Python, Perl, Ruby и другие, существуют языковые привязки.3940wxPython ([http://www.wxpython.org](https://python-all.ru/2.7/faq/gui.html)) – это привязка для wxWidgets на Python. Хотя wxPython часто немного отстаёт от официальных выпусков wxWidgets, он также предоставляет ряд возможностей через расширения на чистом Python, недоступные в других языковых привязках. Существует активное сообщество пользователей и разработчиков wxPython.4142И wxWidgets, и wxPython являются бесплатным программным обеспечением с открытым исходным кодом и разрешительными лицензиями, которые допускают их использование как в коммерческих продуктах, так и в бесплатном или условно-бесплатном ПО.4344### [Qt](https://python-all.ru/2.7/faq/gui.html#id5)4546Существуют привязки для набора инструментов Qt (с использованием либо [PyQt](https://python-all.ru/2.7/faq/gui.html), либо [PySide](https://python-all.ru/2.7/faq/gui.html)) и для KDE ([PyKDE4](https://python-all.ru/2.7/faq/gui.html)). PyQt в настоящее время более зрелый, чем PySide, но для написания проприетарных приложений необходимо приобрести лицензию PyQt у [Riverbank Computing](https://python-all.ru/2.7/faq/gui.html). PySide бесплатен для всех приложений.4748Qt версии 4.5 и выше распространяется по лицензии LGPL; также коммерческие лицензии доступны у [The Qt Company](https://python-all.ru/2.7/faq/gui.html).4950### [Gtk+](https://python-all.ru/2.7/faq/gui.html#id6)5152Привязки PyGtk к [набору инструментов Gtk+](https://python-all.ru/2.7/faq/gui.html) были реализованы Джеймсом Хенстриджем; см. \<[http://www.pygtk.org](https://python-all.ru/2.7/faq/gui.html)\>.5354### [FLTK](https://python-all.ru/2.7/faq/gui.html#id7)5556Привязки Python для [набора инструментов FLTK](https://python-all.ru/2.7/faq/gui.html), простой, но мощной и зрелой кроссплатформенной оконной системы, доступны в [проекте PyFLTK](https://python-all.ru/2.7/faq/gui.html).5758### [OpenGL](https://python-all.ru/2.7/faq/gui.html#id8)5960Для привязок OpenGL см. [PyOpenGL](https://python-all.ru/2.7/faq/gui.html).6162## [Какие платформозависимые наборы инструментов GUI существуют для Python?](https://python-all.ru/2.7/faq/gui.html#id9)6364Установив [PyObjc Objective-C bridge](https://python-all.ru/2.7/faq/gui.html), программы на Python могут использовать библиотеки Cocoa от Mac OS X.6566[Pythonwin](https://python-all.ru/2.7/faq/windows.html#windows-faq) от Mark Hammond включает интерфейс к Microsoft Foundation Classes и среду программирования на Python, которая в основном написана на Python с использованием классов MFC.6768## [Вопросы по Tkinter](https://python-all.ru/2.7/faq/gui.html#id10)6970### [Как заморозить приложения Tkinter?](https://python-all.ru/2.7/faq/gui.html#id11)7172Freeze – это инструмент для создания автономных приложений. При заморозке приложений Tkinter приложения не будут полностью автономными, поскольку приложению всё равно потребуются библиотеки Tcl и Tk.7374Одно из решений – поставлять приложение вместе с библиотеками Tcl и Tk и указывать на них во время выполнения с помощью `TCL_LIBRARY` и `TK_LIBRARY` переменных окружения.7576Чтобы получить по-настоящему автономные приложения, сценарии Tcl, составляющие библиотеку, также должны быть интегрированы в приложение. Одним из инструментов, поддерживающих это, является SAM (автономные модули), который входит в состав дистрибутива Tix ([http://tix.sourceforge.net/](https://python-all.ru/2.7/faq/gui.html)).7778Соберите Tix с включённым SAM, выполните соответствующий вызов `Tclsam_init()` и т.д. внутри `Modules/tkappinit.c` Python и свяжите с libtclsam и libtksam (возможно, стоит включить и библиотеки Tix).7980### [Можно ли обрабатывать события Tk во время ожидания ввода-вывода?](https://python-all.ru/2.7/faq/gui.html#id12)8182На платформах, отличных от Windows, да, и даже не нужны потоки! Но придётся немного реструктурировать код ввода-вывода. В Tk есть аналог вызова `XtAddInput()` из Xt, который позволяет зарегистрировать функцию обратного вызова, которая будет вызвана из главного цикла Tk, когда возможен ввод-вывод для файлового дескриптора. См. [Обработчики файлов](https://python-all.ru/2.7/library/tkinter.html#tkinter-file-handlers).8384### [Не удаётся заставить работать привязки клавиш в Tkinter: почему?](https://python-all.ru/2.7/faq/gui.html#id13)8586Часто можно услышать жалобу на то, что обработчики событий, привязанные к событиям с помощью метода `bind()`, не срабатывают, даже если нажата соответствующая клавиша.8788Наиболее распространённая причина в том, что виджет, к которому относится привязка, не имеет «фокуса клавиатуры». Обратитесь к документации Tk по команде focus. Обычно виджет получает фокус клавиатуры при щелчке по нему (но не для меток; см. опцию takefocus).89