FAQ da Interface Gráfica do Usuário
***********************************


Que ferramentas de GUI independentes da plataforma existem para o Python?
=========================================================================

Depending on what platform(s) you are aiming at, there are several.


Tkinter
-------

Standard builds of Python include an object-oriented interface to the
Tcl/Tk widget set, called Tkinter.  This is probably the easiest to
install and use. For more info about Tk, including pointers to the
source, see the Tcl/Tk home page at https://www.tcl.tk.  Tcl/Tk is
fully portable to the Mac OS X, Windows, and Unix platforms.


wxWidgets
---------

WxWidgets (https://www.wxwidgets.org) é uma biblioteca de classe GUI
livre e portátil escrita em C ++ que fornece uma aparência e sensação
nativas em várias plataformas, com Windows, Mac OS X, GTK, X11, todos
listados como Metas estáveis atuais. As ligações de idiomas estão
disponíveis para vários idiomas, incluindo Python, Perl, Ruby, etc.

WxPython (http://www.wxpython.org) é a ligação Python para wxwidgets.
Embora muitas vezes desça um pouco atrás dos lançamentos oficiais do
wxWidgets, ele também oferece uma série de recursos através de
extensões Python puras que não estão disponíveis em outras ligações de
idiomas. Existe uma comunidade de usuários e desenvolvedores ativa do
wxPython.

Ambos wxWidgets e wxPython são gratuitos, de código aberto, software
com licenças permissivas que permitem seu uso em produtos comerciais,
bem como em freeware ou shareware.


Qt
--

Existem ligações disponíveis para o kit de ferramentas Qt (usando PyQt
<https://riverbankcomputing.com/software/pyqt/intro> *_ ou* PySide
<https://wiki.qt.io/PySide> *_) e Para o KDE (`PyKDE4
<https://techbase.kde.org/Languages/Python/Using_PyKDE_4>* __). O PyQt
é atualmente mais maduro do que o PySide, mas você deve comprar uma
licença PyQt da *Riverbank Computing
<https://www.riverbankcomputing.com/commercial/license-faq>* _ se você
deseja escrever aplicativos proprietários. PySide é gratuito para
todas as aplicações.

Qt 4.5 para cima é licenciado sob a licença LGPL; Além disso, as
licenças comerciais estão disponíveis na *The Qt Company
<https://www.qt.io/licensing/>* _.


Gtk+
----

PyGtk bindings for the Gtk+ toolkit have been implemented by James
Henstridge; see <http://www.pygtk.org>.


FLTK
----

As ligações Python para *the FLTK toolkit <http://www.fltk.org>* _, um
sistema de janelas multiplataforma simples, porém poderoso e maduro,
estão disponíveis no >>`<<projeto PyFLTK
<http://pyfltk.sourceforge.net > >>`<<_.


OpenGL
------

Para ligações OpenGL, veja *PyOpenGL
<http://pyopengl.sourceforge.net>* _.


Que kits de ferramentas GUI específicos da plataforma existem para o Python?
============================================================================

Ao instalar a opção *PyObjc Objective-C bridge
<https://pythonhosted.org/pyobjc/>* _, os programas Python podem usar
as bibliotecas Cocoa do Mac OS X.

: Ref: >>`<<Pythonwin 1 ‘de Mark Hammond inclui uma interface para o
Microsoft Foundation Classes e um ambiente de programação Python que
está escrito principalmente em Python usando as classes MFC.


Perguntas do Tkinter
====================


Como eu pauso as aplicações Tkinter?
------------------------------------

Freeze é uma ferramenta para criar aplicativos autônomos. Ao congelar
aplicativos Tkinter, os aplicativos não serão verdadeiramente
autônomos, pois o aplicativo ainda precisará das bibliotecas Tcl e Tk.

Uma solução é enviar o aplicativo com as bibliotecas Tcl e Tk e
apontá-las em tempo de execução usando as variáveis de ambiente:
envvar: *TCL_LIBRARY* e: envvar:` TK_LIBRARY`.

Para obter aplicativos verdadeiramente autônomos, os scripts Tcl que
formam a biblioteca também precisam ser integrados no aplicativo. Uma
ferramenta que suporta isso é SAM (módulos autônomos), que faz parte
da distribuição Tix (http://tix.sourceforge.net/).

Crie o Tix com SAM habilitado, execute a chamada apropriada para: c:
func: *Tclsam_init*, etc. dentro do arquivo Python:` Módulos /
tkappinit.c` e link com libtclsam e libtksam (você também pode incluir
as bibliotecas Tix) ).


Posso ter eventos Tk manipulados enquanto aguardo I / O?
--------------------------------------------------------

Em plataformas diferentes do Windows, sim, e você nem precisa de
threads! Mas você terá que reestruturar seu código de E / S um pouco.
O Tk tem o equivalente a Xt: c: func: *XtAddInput ()* chamada, que
permite que você registre uma função de retorno de chamada que será
chamada a partir do mainkop Tk quando I / O é possível em um descritor
de arquivo. Consulte: ref: *tkinter-file-handlers*.


Não consigo obter ligações chave para trabalhar em Tkinter: por quê?
--------------------------------------------------------------------

Uma queixa frequentemente ouvida é que os manipuladores de eventos
vinculados a eventos com o método: meth: *bind* não são manipulados
mesmo quando a tecla apropriada é pressionada.

A causa mais comum é que o widget para o qual a ligação se aplica não
possui “foco no teclado”. Confira a documentação do Tk para o comando
de foco. Normalmente, um widget é dado o foco do teclado clicando nele
(mas não para rótulos, veja a opção takefocus).
