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.

To get truly stand-alone applications, the Tcl scripts that form the
library have to be integrated into the application as well. One tool
supporting that is SAM (stand-alone modules), which is part of the Tix
distribution (https://tix.sourceforge.net/).

Build Tix with SAM enabled, perform the appropriate call to
"Tclsam_init()", etc. inside Python's "Modules/tkappinit.c", and link
with libtclsam and libtksam (you might include the Tix libraries as
well).


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“).
