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.

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 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 File Handlers.


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