Hübsche grafische Oberflächen mit Python und Tkinter, ganz ohne Code. Das Tool Figma, ursprünglich für Rapid Prototyping im Bereich User Experience (UX) und User Interface (UI) Design, ist genau darauf spezialisiert.
Das Open-Source-Tool „Tkinter Designer“ kann Tkinter-basierte Python-GUIs aus Figma-Designs erstellen.
(Bild: Lang / Figma)
Wer grafische Oberflächen für Python-Programme kreieren möchte, steht zunächst vor der Wahl einer passenden Bibliothek. Oft genug wird es auf Tkinter hinauslaufen, das in den meisten Python-Installationen schon bereitsteht. Es ist zudem kostenlos, ordentlich dokumentiert, stellt eine ansehnliche Anzahl Widgets zur Verfügung und die Verknüpfung von Design und Funktionen ist ebenfalls einfach umgesetzt.
Die nächste Wahl fällt schon schwerer: Welchen Designer? Die Auswahl ist hier leider nicht sonderlich groß, freundlich gesagt. Als Online-Dienst würde sich zum Beispiel Visual TK anbieten. Es offeriert allerdings nur ein paar wenige Basis-Widgets und einige Features funktionieren auch gar nicht erst.
Visual TK – ein arg rudimentärer Designer.
(Bild: Lang / Tkinter Designer)
Für ein schnelles Layout mag Visual TK gegebenenfalls geeignet sein. Hier soll es aber nur ein typisches Problem aufzeigen: Derlei Drag-and-Drop-Designer bieten meist schlicht die vorgegebenen Widgets als Palette und ein paar rudimentäre Design-Werkzeuge. Das ist zwar schnell und standardkonform, aber hübsch? Nicht wirklich.
Hier kommt Figma ins Spiel. Figma existiert als Idee und Frühwerk bereits seit über 10 Jahren, seit 2019 lässt es sich produktiv nutzen. Erst 2022 wollte Adobe das Unternehmen für 20 Milliarden Euro übernehmen. Im Wesentlichen ist Figma ein kollaboratives Design-Werkzeug, ursprünglich für Rapid Prototyping im Bereich UI/UX konzipiert.
Figma läuft als Web- und als Desktop-Anwendung und wird längst auch für jegliche sonstige Zwecke genutzt: Handouts, Hochzeitskarten, hübsch formatierte Informationen für Auditoren, Tabellen, Grafen und so weiter. Trotzdem überzeugt Figma vor allem im Bereich UI/UX, da sich hier auch riesige Bibliotheken mit Widgets finden, beispielsweise Windows UI von Microsoft.
Von diesen Möglichkeiten profitiert der Tkinter Designer. Das Open-Source-Tool kann aus Figma-Designs Tkinter-basierte Python-GUIs erzeugen – mit einem einzigen Befehl. Tkinter Designer ist ein eher kleines, nicht-kommerzielles Projekt und unterstützt längst nicht alles, was in Figma möglich ist – geschweige denn alles, was über Bibliotheken geliefert wird.
Die Windows-UI-Bibliothek bietet etwa komplexe Objekte wie Farbwähler, die wiederum aus etlichen Buttons, Slidern und sonstigen Elementen bestehen. Hier darf man nicht erwarten, dass die einzelnen Elemente zu separaten Buttons, Textbereichen etc. konvertiert werden. Bislang funktionieren folgende Tkinter-Elemente: Button, Line, Text, Rectangle, Text, Entry Box, Image sowie experiementell Hover-Effekte für Buttons.
Tkinter Designer in der Praxis
Zunächst benötigen wir einen Figma-Account, was freilich auch über ein Google-Konto funktioniert. Nach der Anmeldung lässt sich direkt der später benötigte API-Schlüssel erstellen. Diesen erhalten wir über den Hauptmenü-Eintrag „Help and account/Account settings/Personal access tokens“.
Für die Installation von Tkinter Designer müssen Python und Pip vorhanden sein:
pip install tkdesigner
Damit ist die Einrichtung auch schon abgeschlossen und wir können mit dem Entwurf beginnen. Tkinter Designer setzt dabei auf ein wunderbar simples Prinzip. Elemente wie Bilder und Texte werden schlicht über ihre Namen umgewandelt. Soll beispielsweise ein Eingabefeld erzeugt werden, wird dies über ein Rectangle-Element realisiert, das schlicht „TextBox“ heißen muss.
Aus dem Figma-Frame wird ein Tkinter-Fenster.
(Bild: Lang / Tkinter Designer)
Aber mal Schritt für Schritt durch ein kleines Beispiel: Die Basis für ein Design ist ein Frame. Aus einem Frame wird später ein Fenster. Man kann durchaus mehrere Frames in einem Projekt erstellen und somit eine komplette App darstellen. Als erstes, einfachstes Element bietet sich etwas Text an – auch hier genügt es, den Text beliebig zu platzieren, keine weiteren Aktionen nötig.
Rectangle und Text übereinander.
(Bild: Lang / Tkinter Designer)
Interessanter wird es bei einem Button, da dieser tendenziell aus zwei Elementen besteht: Rectangle und Text. Wir zeichnen also zunächst den Button mit dem Rectangle-Werkzeug; optional ließe sich dieses Rechteck auch weiter gestalten, etwa mit einem Schatten versehen. Anschließend legen wir den gewünschten Text als neues Element direkt über den Button.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Ein Button als Text-Rectangle-Gruppe.
(Bild: Lang / Tkinter Designer)
Nun muss aus diesen Elementen jedoch noch ein Button werden. Dazu werden beide Elemente markiert und dann per STRG+G gruppiert. Die neue Gruppe muss nun noch umbenannt werden in „Button“. Mit Bildern und Formen ist das Prozedere identisch: Alle Elemente müssen gruppiert werden und die Gruppe muss „Image“ heißen.
Das „fertige“ Design samt Kommentarbox.
(Bild: Lang / Tkinter Designer)
Als letztes Beispiel: Um ein mehrzeiliges Eingabefeld zu erhalten, benötigen wir in Figma schlicht ein Rectangle-Element mit dem Namen „TextArea“. Für einzeilige Eingabefelder müsste es entsprechend „TextBox“ heißen. Den zugehörigen Text kann man wie bereits erwähnt ohne spezielle Angaben setzen.
Wenn der Entwurf fertig ist, erhalten wir die Projekt-URL über den Share-Button oben rechts. Anschließend lässt sich mit folgender Befehlsstruktur die Python-GUI bauen:
tkdesigner URL API-TOKEN
Die interaktive Python-GUI.
(Bild: Lang / Tkinter Designer)
Hier das Ergebnis. So schrecklich dies Demo-Ergebnis auch aussehen mag, es zeigt sehr deutlich die verfügbaren Elemente und das simple Prinzip des Designers. Das ganze Projekt besteht dann aus einer Datei „gui.py“ und einem Assets-Ordner mit der erzeugten Bilddatei.
Abgerundete Buttons und solche mit Hover-Effekt benötigen ein klein wenig mehr Aufwand. In beiden Fällen werden letztlich zwei Buttons/Rectangles übereinandergelegt, ein normales Rectangle als klickbarer Button und ein abgerundetes oder eingefärbtes Rectangle für den Effekt.
Was die Dokumentation nicht erwähnt: Auch Bilder können als Buttons genutzt werden. Platzieren Sie einfach ein Bild und nennen Sie es ebenfalls „Button“, schon ist es in der Python-GUI als klickbarer Button zu finden.
Im Screenshot unten die Ausgabe „button_2 clicked“ – das ist die voreingestellte Funktion des Buttons:
Hier wird also ohne separat definierte Funktion per Lambda-Ausdruck ein Print-Kommando ausgeführt. Dass dem Button automatisch Funktionalität spendiert wird, dürften Python-Einsteiger dem Entwickler danken.
Noch ein kleiner Troubleshooting-Tipp zum Schluss: Die Python-GUI nutzt intern absolute Pfade für die Assets. Wird das Projekt also verschoben, gilt es, die Variable „ASSETS_PATH“ in der gui.py-Datei anzupassen.
Tkinter Designer mag ein wenig begrenzt sein. Normale GUI-Designer, die die komplette Widget-Bibliothek einer Sprache oder eines Frameworks anbieten, können so eben auch Dinge wie Slider, Auswahldialoge und sonstige Standards umsetzen. Und auch der Workflow über Figma und ein Namensschema ist freilich eigenwillig.
Aber das clevere kleine Werkzeug funktioniert hier bislang einwandfrei. Es setzt auf eine der populärsten Design-Plattformen und ermöglicht durchaus praxistaugliche Oberflächen. Diese bieten zwar nur Basisfunktionen, können dafür aber wirklich hübsch sein. Wie immer ist es also eine Frage des Einsatzzwecks.