Graphische Oberfläche FAQ
*************************


Allgemeine GUI Fragen
=====================


Welche GUI Toolkits existieren für Python?
==========================================

Standard-Python-Installationen enthalten eine objektorientierte
Schnittstelle zum Tcl/Tk-Widget-Set, die als tkinter bezeichnet wird.
Diese ist wahrscheinlich am einfachsten zu installieren (da sie in den
meisten Binärdistributionen von Python enthalten ist) und zu
verwenden. Weitere Informationen zu Tk, einschließlich Verweise auf
den Quellcode, finden Sie auf der Tcl/Tk-Homepage.  Tcl/Tk ist
vollständig auf die Plattformen macOS, Windows und Unix portierbar.

Je nachdem, auf welche Plattform(en) Sie abzielen, gibt es zudem
mehrere Alternativen. Eine Liste plattformübergreifender und
plattformspezifischer GUI-Frameworks finden Sie im Python-Wiki.


Tkinter Fragen
==============


Wie friere ich Tkinter-Apps ein?
--------------------------------

Freeze ist ein Tool zur Erstellung eigenständiger Anwendungen. Beim
„Einfrieren“ von Tkinter-Anwendungen werden diese jedoch nicht
wirklich eigenständig, da sie weiterhin die Tcl- und Tk-Bibliotheken
benötigen.

Eine Lösung besteht darin, die Anwendung zusammen mit den Tcl- und Tk-
Bibliotheken auszuliefern und zur Laufzeit mithilfe der
Umgebungsvariablen „ "TCL_LIBRARY" “ und „ "TK_LIBRARY" “ auf diese zu
verweisen.

Verschiedene Freeze-Bibliotheken von Drittanbietern wie py2exe und
cx_Freeze verfügen über integrierte Funktionen zur Verarbeitung von
Tkinter-Anwendungen.


Ist es möglich Tk Events verarbeitet, während ich auf die I/O warte?
--------------------------------------------------------------------

Auf anderen Plattformen als Windows ja, und Sie brauchen nicht einmal
Threads! Allerdings müssen Sie Ihren E/A-Code ein wenig umgestalten.
Tk verfügt über eine Entsprechung zum Xt-Aufruf ` "XtAddInput()" *,
mit der du eine Callback-Funktion registrieren kannst, die von der Tk-
Hauptschleife aufgerufen wird, sobald E/A-Operationen für einen
Dateideskriptor möglich sind. Siehe :ref:`tkinter-file-handlers*.


Ich bekomme keine Key-Bindings zum funktionieren in Tkinter: warum?
-------------------------------------------------------------------

Eine häufig geäußerte Beschwerde lautet, dass Ereignisbehandler, die
:ref:` <bindings-and-events>` mit der Methode "bind()" an Ereignisse
gebunden haben, nicht ausgelöst werden, selbst wenn die entsprechende
Taste gedrückt wird.

Die häufigste Ursache ist, dass das Widget, auf das sich die Bindung
bezieht, keinen „Tastaturfokus“ hat.  Schau dir in der Tk-
Dokumentation den Befehl „focus“ an. Normalerweise erhält ein Widget
den Tastaturfokus, wenn man darauf klickt (dies gilt jedoch nicht für
Labels; siehe die Option „takefocus“).
