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