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


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


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

Standard-Python-Builds enthalten eine objektorientierte Schnittstelle
zum Tcl/Tk-Widget-Set namens tkinter. Diese ist wahrscheinlich am
einfachsten zu installieren (da sie bei den meisten
Binärdistributionen von Python enthalten ist) und zu verwenden.
Weitere Informationen zu Tk, einschließlich Hinweisen zum Quellcode,
findest du auf der Tcl/Tk-Homepage. Tcl/Tk ist vollständig portierbar
auf macOS, Windows und Unix.

Je nach Zielplattform(en) gibt es auch mehrere Alternativen. Eine
Liste von plattformübergreifenden und plattformspezifischen GUI-
Frameworks findest du im Python-Wiki.


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


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

Freeze ist ein Werkzeug zum Erstellen eigenständiger Anwendungen. Beim
Einfrieren von Tkinter-Anwendungen sind diese jedoch nicht wirklich
eigenständig, da die Anwendung weiterhin die Tcl- und Tk-Bibliotheken
benötigt.

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 Drittanbieter-Freeze-Bibliotheken wie py2exe und
cx_Freeze verfügen über eine integrierte Unterstützung für Tkinter-
Anwendungen.


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

Auf anderen Plattformen als Windows ja, und du brauchst nicht einmal
Threads! Du musst jedoch deinen I/O-Code etwas umstrukturieren. Tk
verfügt über das Äquivalent von Xts "XtAddInput()"-Aufruf, mit dem du
eine Callback-Funktion registrieren kannst, die vom Tk-Mainloop
aufgerufen wird, sobald I/O auf einem Dateideskriptor möglich ist.
Siehe Dateihandler.


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

Eine häufig gehörte Beschwerde ist, dass Event-Handler, die mit der
"bind()"-Methode an Ereignisse gebunden sind, nicht ausgeführt werden,
selbst wenn die entsprechende Taste gedrückt wird.

Die häufigste Ursache ist, dass das Widget, auf das die Bindung
angewendet wird, keinen "Tastaturfokus" hat. Schau dir die Tk-
Dokumentation zum focus-Befehl an. Normalerweise erhält ein Widget den
Tastaturfokus durch einen Klick darauf (nicht jedoch bei Labels, siehe
die takefocus-Option).
