Weiter zum Inhalt

Einstieg in GUIs mit Tkinter in Python

In diesem Tutorial lernst du, wie du GUI-Apps in Python erstellst. Außerdem lernst du alle Bausteine kennen, die du für die GUI-Entwicklung in Python brauchst.
Aktualisiert 18. Sept. 2026  · 11 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Bevor du loslegst, solltest du mit Python vertraut sein, um Tkinter zu lernen. Wenn du neu bei Python bist, schau dir den Introduction to Python Kurs von DataCamp und unseren Leitfaden zum Pythonlernen an.

Einführung

drone feed
Drohnen-Feed in einer GUI mit Tkinter

Die meisten schreiben Code und führen ihn in einem Terminal oder einer IDE (Integrated Development Environment) aus. Der Code liefert dann die erwartete Ausgabe im Terminal oder direkt in der IDE. Aber was, wenn du deiner Anwendung eine ansprechende Benutzeroberfläche geben willst oder dein Use Case eine GUI erfordert?

Eine GUI ist im Grunde eine Desktop-App, die dir eine Oberfläche bietet, um mit dem Computer zu interagieren, und das Arbeiten mit deinen Programmen angenehmer macht als reiner Kommandozeileneingang. GUIs kommen auf Desktops, Laptops und anderen elektronischen Geräten zum Einsatz.

Typische Anwendungen, in denen GUIs ihre Stärken ausspielen:

  • Ein Taschenrechner mit Benutzeroberfläche und den gewohnten Funktionen.
  • Texteditoren und IDEs fürs Coden laufen als GUI-Apps.
  • Spiele wie Sudoku, Schach, Solitär usw. sind GUI-Apps.
  • Chrome, Firefox, Microsoft Edge und andere Browser sind GUI-Anwendungen zum Surfen im Internet.

Ein weiteres spannendes Beispiel: Eine GUI zur Steuerung einer Drohne vom Laptop aus, mit Buttons zum Manövrieren und einem Bildschirm, der den Kamerafeed der Drohne in Echtzeit zeigt.

Schauen wir uns einige Frameworks an, die Python für die GUI-Entwicklung bietet:

  • PyQT ist eine der beliebtesten plattformübergreifenden Python-Bindings für die Qt-Bibliothek des Qt Application Development Frameworks. Qt gehört hauptsächlich Nokia. PyQT ist für nahezu alle Betriebssysteme verfügbar, darunter Unix/Linux, Windows und macOS. Es verbindet die Stärken von Python und Qt und gibt Entwicklerinnen und Entwicklern die Freiheit, Programme rein in Python zu schreiben oder mit dem Qt Designer visuelle Dialoge zu erstellen.
  • Kivy dient zur Erstellung moderner Benutzeroberflächen und ist ein Framework mit OpenGL ES 2-Beschleunigung. Ähnlich wie PyQt unterstützt Kivy nahezu alle Plattformen wie Windows, macOS, Linux, Android und iOS. Es ist Open Source und bringt über 20 vorgefertigte Widgets im Toolkit mit.
  • Jython ist ein Python-Port für Java und ermöglicht Python-Skripten nahtlosen Zugriff auf die Java-Klassenbibliotheken der lokalen Maschine.
  • WxPython, ursprünglich WxWindows (heute WxWidgets Library), ist ein Open-Source-Wrapper auf höherer Abstraktionsebene für eine plattformübergreifende GUI-Bibliothek. Es ist als Python-Erweiterungsmodul implementiert. Mit WxPython kannst du native Anwendungen für Windows, macOS und Unix erstellen.
  • PyGUI ist ein plattformübergreifendes GUI-Framework für Unix, Macintosh und Windows. Im Vergleich zu anderen GUI-Frameworks ist PyGUI sehr einfach und schlank, da die API konsequent auf Python ausgerichtet ist. PyGUI fügt nur wenig Code zwischen GUI-Plattform und Python-Anwendung ein; dadurch wirkt die Darstellung meist wie die natürliche GUI der jeweiligen Plattform.

Und schließlich das Framework, um das es in diesem Tutorial geht: Tkinter!

  • Tkinter wird üblicherweise mit Python gebündelt, nutzt Tk und ist das Standard-GUI-Framework von Python. Es ist bekannt für seine Einfachheit und die grafische Oberfläche. Tkinter ist Open Source und unter der Python-Lizenz verfügbar.

Hinweis: Tkinter ist in Python 3 bereits vorinstalliert. Du musst nichts zusätzlich installieren.

Jetzt bauen wir mit Tkinter eine sehr einfache GUI und verstehen den Ablauf mithilfe eines Flussdiagramms.

flow diagram
Flussdiagramm zum Rendern einer einfachen GUI

Zerlegen wir das Flussdiagramm und schauen uns an, was die einzelnen Komponenten übernehmen.

  • Als Erstes importierst du die zentrale Komponente, also das Modul Tkinter.
  • Dann initialisierst du mit tkinter.Tk() den Window-Manager und weist ihn einer Variable zu. Diese Methode erzeugt ein leeres Fenster mit Schließen-, Maximieren- und Minimieren-Schaltflächen – wie es sich für eine GUI gehört.
  • Optional benennst du den Fenstertitel um mit window.title(title_of_the_window).
  • Als Nächstes verwendest du ein Widget namens Label, mit dem du Text in das Fenster einfügst.
  • Dann nutzt du das Geometriemanagement-Attribut pack() von Tkinter, um das Widget in der benötigten Größe anzuzeigen.
  • Zum Schluss sorgst du mit mainloop() dafür, dass das Fenster so lange angezeigt wird, bis du es manuell schließt. Im Hintergrund läuft dabei eine Endlosschleife.
import tkinter

window = tkinter.Tk()
# to rename the title of the window
window.title("GUI")
# pack is used to show the object in the window
label = tkinter.Label(window, text = "Welcome to DataCamp's Tutorial on Tkinter!").pack()
window.mainloop()

Wenn du den obigen Code im Terminal ausführst, erhältst du eine ähnliche Ausgabe wie unten gezeigt.

gui

Genauso kannst du ein Button-Widget verwenden, dann zeigt die GUI statt eines Texts (Label) eine Schaltfläche an.

import tkinter
window = tkinter.Tk()
window.title("Button GUI")
button_widget = tkinter.Button(window,text="Welcome to DataCamp's Tutorial on Tkinter")
button_widget.pack()
tkinter.mainloop()
button gui

Du hast bereits Widgets in Tkinter verwendet. Schauen wir uns nun an, welche weiteren Widgets es gibt und wie sie funktionieren.

Meistere deine Datenkenntnisse mit DataCamp

Mehr als 10 Millionen Menschen lernen Python, R, SQL und andere technische Fertigkeiten in unseren praxisorientierten Kursen, die von Branchenexperten entwickelt wurden.

Lernen Beginnen
learner-on-couch@2x.jpg

Widgets

Widgets entsprechen in ihrer Idee den Elementen in HTML. In Tkinter findest du verschiedene Widget-Typen für unterschiedliche Elemente. Es sind Standard-GUI-Bausteine und bieten Steuerelemente wie Buttons, Text, Menüs und Eingabefelder.

Schauen wir uns diese Widgets in Tkinter mit Beispielen an (Quelle).

  • Button: Das Button-Widget lässt sich ein- und ausschalten. Wenn der Nutzer klickt, löst das in Tkinter ein Ereignis aus.

    Syntax: button_widget = tk.Button(widget, option=placeholder), wobei widget das übergeordnete Fenster/der Frame ist und option Platzhalter für Werte wie Vorder- und Hintergrundfarbe, Schriftart, command (für Funktionsaufruf), Bild, Höhe und Breite des Buttons sein kann.

  • Canvas: Canvas dient zum Zeichnen von Formen in deiner GUI und unterstützt verschiedene Zeichenmethoden.

    Syntax: canvas_widget = tk.Canvas(widget, option=placeholder), wobei widget das übergeordnete Fenster/der Frame ist und option Werte wie Rahmenbreite, Hintergrundfarbe sowie Höhe und Breite enthalten kann.

  • Checkbutton: Checkbutton speichert Ein/Aus- bzw. Wahr/Falsch-Zustände. Du kannst mehrere Optionen gleichzeitig auswählen oder auch keine.

    Syntax: checkbutton_widget = tk.CheckButton(widget, option=placeholder), wobei widget das übergeordnete Fenster/der Frame ist und option Werte wie Titel, Text, Hintergrund- und Vordergrundfarbe bei Hover, Schriftart, Bild usw. annehmen kann.

  • Entry: Entry-Widgets erzeugen Eingabefelder, um Text in der GUI vom Nutzer entgegenzunehmen.

    Syntax: entry_widget = tk.Entry(widget, option=placeholder), wobei widget das übergeordnete Fenster/der Frame ist und option u. a. Rahmenbreite, Hintergrundfarbe sowie Breite und Höhe definieren kann.

  • Frame: Frames dienen in Tkinter als Container, um Widgets zu gruppieren und sauber zu strukturieren.

    Syntax: frame_widget = tk.Frame(widget, option=placeholder), wobei widget das übergeordnete Fenster/der Frame ist und option u. a. Rahmenbreite, Höhe/Breite und highlightcolor (Fokusfarbe) enthalten kann.

  • Label: Label erzeugt einzeilige Elemente wie Text oder Bilder.

    Syntax: label_widget = tk.Label(widget, option=placeholder), wobei widget das übergeordnete Fenster/der Frame ist und option u. a. Schriftart, Hintergrundfarbe, Bild sowie Höhe und Breite enthalten kann.

Die vollständige Widget-Referenz findest du in der offiziellen Python-Dokumentation.

Geometriemanagement

Alle Widgets in Tkinter haben eine Geometrie. Darüber lässt sich steuern, wie Widgets innerhalb ihrer übergeordneten Frames oder Bereiche angeordnet werden.

Eine der Geometriemanager-Klassen, nämlich pack(), haben wir bereits hier gestreift.

Dafür stellt dir Tkinter drei Haupt-Geometriemanager zur Verfügung:

  • pack(): Ordnet Widgets blockweise an und nutzt dabei die gesamte verfügbare Breite. Das ist eine gängige Methode, um Widgets im Fenster anzuzeigen.

  • grid(): Organisiert Widgets in einer tabellenähnlichen Struktur. Du lernst es später im Tutorial noch ausführlicher kennen.

  • place(): Platziert Widgets an einer exakten Position, die du im übergeordneten Widget angibst.

Layout und Widgets organisieren

In diesem Abschnitt kombinierst du Geometrie und Widgets und siehst, was Tkinter kann.

Zum Anordnen im window verwendest du die Widget-Klasse Frame. Erstellen wir ein kurzes Programm, um zu sehen, wie Frame funktioniert.

  • Du definierst zwei Frames – oben und unten – und richtest sie mit der pack-Klasse aus. Die Frame-Klasse schafft eine Unterteilung des Fensters. Praktisch wird ein Fenster als oberer und unterer Bereich dupliziert.

  • Anschließend erstellst du vier Buttons, zwei pro Frame. Benennung und Farbe kannst du als Parameter frei wählen.

import tkinter

# Let's create the Tkinter window.
window = tkinter.Tk()
window.title("GUI")

# You will first create a division with the help of Frame class and align them on TOP and BOTTOM with pack() method.
top_frame = tkinter.Frame(window).pack()
bottom_frame = tkinter.Frame(window).pack(side = "bottom")

# Once the frames are created then you are all set to add widgets in both the frames.
btn1 = tkinter.Button(top_frame, text = "Button1", fg = "red").pack() #'fg or foreground' is for coloring the contents (buttons)

btn2 = tkinter.Button(top_frame, text = "Button2", fg = "green").pack()

btn3 = tkinter.Button(bottom_frame, text = "Button3", fg = "purple").pack(side = "left") #'side' is used to left or right align the widgets

btn4 = tkinter.Button(bottom_frame, text = "Button4", fg = "orange").pack(side = "left")

window.mainloop()

Führen wir den Code aus und schauen uns die Ausgabe an.

output of code

Grid

Ähnlich wie ein Frame ist grid eine weitere Möglichkeit, Widgets zu organisieren. Es nutzt das Matrixkonzept aus Zeilen und Spalten. Das folgende Diagramm hilft beim Verständnis der Analogie zwischen der grid-Klasse und dem Zeilen-Spalten-Prinzip.

square matrix
Eine quadratische Matrix (2x2)

grid verwendet primär die Parameter row und column. Stell dir im obigen Bild vor, 00 entspricht dem ersten Button und 01 dem zweiten. Um zwei Buttons nebeneinander zu platzieren, übergibst du row und column entsprechend 00 und 01.

Verwenden wir checkbutton, um zu sehen, wie grid funktioniert. Du definierst zwei Checkbuttons und gibst beiden einen Text. Den Zustand der Checkbuttons steuern onvalue und offvalue, der aktuelle Zustand wird mit IntVar() verfolgt und in einer Variablen gespeichert. Wenn offvalue=1 und onvalue=0 gesetzt ist, wird der entsprechende Checkbutton markiert.

Für die grid-Klasse übergibst du den Parameter row, der den Button in die erste Zeile setzt, wenn row=0, bzw. in die zweite, wenn row=1.

import tkinter
from tkinter import *
top = tkinter.Tk()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
tkinter.Checkbutton(top, text = "Machine Learning",variable = CheckVar1,onvalue = 1, offvalue=0).grid(row=0,sticky=W)
tkinter.Checkbutton(top, text = "Deep Learning", variable = CheckVar2, onvalue = 0, offvalue =1).grid(row=1,sticky=W)
top.mainloop()

Führen wir den Code aus und sehen uns die Ausgabe an.

tk deep learning

Noch ein Beispiel für grid. Dieses Mal übergeben wir neben row auch column.

import tkinter
# Let's create the Tkinter window
window = tkinter.Tk()
window.title("GUI")

# You will create two text labels namely 'username' and 'password' and and two input labels for them

tkinter.Label(window, text = "Username").grid(row = 0) #'username' is placed on position 00 (row - 0 and column - 0)

# 'Entry' class is used to display the input-field for 'username' text label
tkinter.Entry(window).grid(row = 0, column = 1) # first input-field is placed on position 01 (row - 0 and column - 1)

tkinter.Label(window, text = "Password").grid(row = 1) #'password' is placed on position 10 (row - 1 and column - 0)

tkinter.Entry(window).grid(row = 1, column = 1) #second input-field is placed on position 11 (row - 1 and column - 1)

# 'Checkbutton' class is for creating a checkbutton which will take a 'columnspan' of width two (covers two columns)
tkinter.Checkbutton(window, text = "Keep Me Logged In").grid(columnspan = 2)                 

window.mainloop()

Schauen wir uns die Ausgabe des obigen Codes an.

output of code

Erstaunlich, oder? So einfach – und es erinnert stark an HTML.

Binding- bzw. Command-Funktionen

Binding- bzw. Command-Funktionen werden aufgerufen, wenn ein Ereignis (Event) eintritt oder ausgelöst wird.

Ein Beispiel zur Veranschaulichung:

Du definierst einen Button, der beim Klick eine Funktion DataCamp_Tutorial aufruft. Diese Funktion erzeugt ein neues Label mit dem Text GUI with Tkinter!.

import tkinter
# Let's create the Tkinter window
window = tkinter.Tk()
window.title("GUI")

# creating a function called DataCamp_Tutorial()
def DataCamp_Tutorial():
    tkinter.Label(window, text = "GUI with Tkinter!").pack()

tkinter.Button(window, text = "Click Me!", command = DataCamp_Tutorial).pack()
window.mainloop()

Führe den Code aus und beobachte die Ausgabe.

code output

Neben Mausklicks lassen sich Events auch durch Mausbewegung, Hover, Scrollen usw. auslösen.

Schauen wir uns jetzt die Methode bind an, die dir dieselbe Funktionalität bietet.

Mausklick-Events mit der Bind-Methode

Die Methode bind bietet einen sehr einfachen Ansatz zur Umsetzung von Mausklick-Events. Es gibt drei vordefinierte Events, die du direkt mit bind nutzen kannst.

Klick-Events gibt es in drei Varianten: leftClick, middleClick und rightClick.

  • <Button-1> ist das Event für den Linksklick, also wenn du die linke Maustaste drückst. bind ruft dann die als zweiter Parameter übergebene Funktion auf.

  • <Button-2> für den Mittelklick

  • <Button-3> für den Rechtsklick

Jetzt lernst du, wie du abhängig vom Event eine bestimmte Funktion aufrufst.

  • Führe das folgende Programm aus und klicke links, mittig oder rechts, um die jeweilige Funktion auszulösen.

  • Die Funktion erstellt ein neues Label mit dem angegebenen Text.
import tkinter
# Let's create the Tkinter window
window = tkinter.Tk()
window.title("GUI")

#You will create three different functions for three different events
def left_click(event):
    tkinter.Label(window, text = "Left Click!").pack()

def middle_click(event):
    tkinter.Label(window, text = "Middle Click!").pack()

def right_click(event):
    tkinter.Label(window, text = "Right Click!").pack()

window.bind("<Button-1>", left_click)
window.bind("<Button-2>", middle_click)
window.bind("<Button-3>", right_click)

window.mainloop()

Quelle

Führen wir den obigen Code aus.

code output

Alert-Boxen

Mit der Methode messagebox kannst du in Tkinter Hinweis- bzw. Alert-Boxen erstellen. Auch Fragen lassen sich über messagebox stellen.

Hier erstellst du eine einfache Alert-Box und eine Frage. Für den Hinweis nutzt du die messagebox-Funktion showinfo. Für die Frage verwendest du askquestion und gibst abhängig von der Antwort ein Label in der GUI aus.

import tkinter
import tkinter.messagebox

# Let's create the Tkinter window
window = tkinter.Tk()
window.title("GUI")

# Let's create a alert box with 'messagebox' function
tkinter.messagebox.showinfo("Alert Message", "This is just a alert message!")

# Let's also create a question for the user and based upon the response [Yes or No Question] display a message.
response = tkinter.messagebox.askquestion("Tricky Question", "Do you love Deep Learning?")

# A basic 'if/else' block where if user clicks on 'Yes' then it returns 1 else it returns 0. For each response you will display a message with the help of 'Label' method.
if response == 1:
    tkinter.Label(window, text = "Yes, offcourse I love Deep Learning!").pack()
else:
    tkinter.Label(window, text = "No, I don't love Deep Learning!").pack()

window.mainloop()

Führen wir den Code schnell aus und schauen uns die Ausgabe an.

alert box
code output

Bilder rendern

Wenn du bis hierhin mitgekommen bist, ist das Einfügen von Bildern und Icons in die GUI ein Kinderspiel. Du musst nur die Methode PhotoImage von Tkinter verwenden und den file_path als Parameter übergeben.

Also los: Schreiben wir schnell einen Code, um ein Bild in der GUI anzuzeigen.

import tkinter

# Let's create the Tkinter window
window = tkinter.Tk()
window.title("GUI")

# In order to display the image in a GUI, you will use the 'PhotoImage' method of Tkinter. It will an image from the directory (specified path) and store the image in a variable.
icon = tkinter.PhotoImage(file = "CNN.png")

# Finally, to display the image you will make use of the 'Label' method and pass the 'image' variriable as a parameter and use the pack() method to display inside the GUI.
label = tkinter.Label(window, image = icon)
label.pack()

window.mainloop()
rendering images

Stark, wenn du bis hierher dabei warst!

Zum Abschluss baust du als Bonus einen Calculator mit allem, was du bisher gelernt hast. Beenden wir das Tutorial mit einem Highlight.

Einen Rechner mit Tkinter erstellen

Jede GUI-App umfasst zwei Schritte.

  • Erstellen der Benutzeroberfläche

  • Funktionen zur GUI hinzufügen

Starten wir mit dem Rechner. Der meiste Code ist selbsterklärend, einige Zeilen sind zusätzlich kommentiert.

from tkinter import *

# Let's create the Tkinter window
window = Tk()

# Then, you will define the size of the window in width(312) and height(324) using the 'geometry' method
window.geometry("312x324")

# In order to prevent the window from getting resized you will call 'resizable' method on the window
window.resizable(0, 0)

#Finally, define the title of the window
window.title("Calcualtor")


# Let's now define the required functions for the Calculator to function properly.

# 1. First is the button click 'btn_click' function which will continuously update the input field whenever a number is entered or any button is pressed it will act as a button click update.
def btn_click(item):
    global expression
    expression = expression + str(item)
    input_text.set(expression)

# 2. Second is the button clear 'btn_clear' function clears the input field or previous calculations using the button "C"
def btn_clear():
    global expression
    expression = ""
    input_text.set("")

# 3. Third and the final function is button equal ("=") 'btn_equal' function which will calculate the expression present in input field. For example: User clicks button 2, + and 3 then clicks "=" will result in an output 5.
def btn_equal():
    global expression
    result = str(eval(expression)) # 'eval' function is used for evaluating the string expressions directly
    # you can also implement your own function to evalute the expression istead of 'eval' function
    input_text.set(result)
    expression = ""

expression = ""
# In order to get the instance of the input field 'StringVar()' is used
input_text = StringVar()

# Once all the functions are defined then comes the main section where you will start defining the structure of the calculator inside the GUI.

# The first thing is to create a frame for the input field
input_frame = Frame(window, width = 312, height = 50, bd = 0, highlightbackground = "black", highlightcolor = "black", highlightthickness = 1)
input_frame.pack(side = TOP)


# Then you will create an input field inside the 'Frame' that was created in the previous step. Here the digits or the output will be displayed as 'right' aligned
input_field = Entry(input_frame, font = ('arial', 18, 'bold'), textvariable = input_text, width = 50, bg = "#eee", bd = 0, justify = RIGHT)
input_field.grid(row = 0, column = 0)
input_field.pack(ipady = 10) # 'ipady' is an internal padding to increase the height of input field


# Once you have the input field defined then you need a separate frame which will incorporate all the buttons inside it below the 'input field'
btns_frame = Frame(window, width = 312, height = 272.5, bg = "grey")
btns_frame.pack()


# The first row will comprise of the buttons 'Clear (C)' and 'Divide (/)'
clear = Button(btns_frame, text = "C", fg = "black", width = 32, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_clear()).grid(row = 0, column = 0, columnspan = 3, padx = 1, pady = 1)
divide = Button(btns_frame, text = "", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("")).grid(row = 0, column = 3, padx = 1, pady = 1)


# The second row will comprise of the buttons '7', '8', '9' and 'Multiply (*)'
seven = Button(btns_frame, text = "7", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(7)).grid(row = 1, column = 0, padx = 1, pady = 1)
eight = Button(btns_frame, text = "8", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(8)).grid(row = 1, column = 1, padx = 1, pady = 1)
nine = Button(btns_frame, text = "9", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(9)).grid(row = 1, column = 2, padx = 1, pady = 1)
multiply = Button(btns_frame, text = "*", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("*")).grid(row = 1, column = 3, padx = 1, pady = 1)


# The third row will comprise of the buttons '4', '5', '6' and 'Subtract (-)'
four = Button(btns_frame, text = "4", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(4)).grid(row = 2, column = 0, padx = 1, pady = 1)
five = Button(btns_frame, text = "5", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(5)).grid(row = 2, column = 1, padx = 1, pady = 1)
six = Button(btns_frame, text = "6", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(6)).grid(row = 2, column = 2, padx = 1, pady = 1)
minus = Button(btns_frame, text = "-", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("-")).grid(row = 2, column = 3, padx = 1, pady = 1)


# The fourth row will comprise of the buttons '1', '2', '3' and 'Addition (+)'
one = Button(btns_frame, text = "1", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(1)).grid(row = 3, column = 0, padx = 1, pady = 1)
two = Button(btns_frame, text = "2", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(2)).grid(row = 3, column = 1, padx = 1, pady = 1)
three = Button(btns_frame, text = "3", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(3)).grid(row = 3, column = 2, padx = 1, pady = 1)
plus = Button(btns_frame, text = "+", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("+")).grid(row = 3, column = 3, padx = 1, pady = 1)


# Finally, the fifth row will comprise of the buttons '0', 'Decimal (.)', and 'Equal To (=)'
zero = Button(btns_frame, text = "0", fg = "black", width = 21, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(0)).grid(row = 4, column = 0, columnspan = 2, padx = 1, pady = 1)
point = Button(btns_frame, text = ".", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click(".")).grid(row = 4, column = 2, padx = 1, pady = 1)
equals = Button(btns_frame, text = "=", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_equal()).grid(row = 4, column = 3, padx = 1, pady = 1)


window.mainloop()
creating a calculator with tinker

Fazit

Glückwunsch – du hast das Tutorial abgeschlossen!

Auf Basis der Inhalte kannst du jetzt einfache GUI-Apps bauen. Du solltest dir weitere Methoden zur Gestaltung und Interaktion mit Objekten in einer GUI aneignen.

Eine gute Übung ist es, Anwendungen wie den Rechner nachzubauen. Das stärkt dein Selbstvertrauen und vermittelt dir ein ganzheitlicheres Bild davon, was mit Tkinter möglich ist.

Es gibt noch viel zu entdecken. Wenn du die Arbeit mit Klassen in Tkinter vertiefen willst, schau in die Dokumentation.

Stell gerne Fragen zu diesem Tutorial in den Kommentaren unten.

Themen
Python

Erfahre mehr über Python

Kurs

Einführung in Python

4 Std.
7M
Lerne in nur vier Stunden die Grundlagen der Datenanalyse mit Python und entdecke beliebte Python-Pakete.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow
Verwandt

Tutorial

Python-Anweisungen IF, ELIF und ELSE

In diesem Tutorial lernst du ausschließlich Python if else-Anweisungen kennen.
Sejal Jaiswal's photo

Sejal Jaiswal

9 Min.

Tutorial

Python-Tutorial zum Verknüpfen von Zeichenfolgen

Lerne verschiedene Methoden zum Verknüpfen von Zeichenfolgen in Python kennen, mit Beispielen, die jede Technik zeigen.
DataCamp Team's photo

DataCamp Team

5 Min.

Tutorial

Python Datenstrukturen Tutorial

Mach dich mit Python-Datenstrukturen vertraut: Lerne mehr über Datentypen und primitive sowie nicht-primitive Datenstrukturen wie Strings, Listen, Stapel usw.
Sejal Jaiswal's photo

Sejal Jaiswal

24 Min.

Tutorial

if…elif…else in Python Tutorial

Lerne, wie du in Python if…elif…else-Anweisungen erstellst.
DataCamp Team's photo

DataCamp Team

4 Min.

Tutorial

Python-Listenfunktionen und -Methoden – Tutorial und Beispiele

Lerne die Funktionen und Methoden von Python-Listen kennen. Schau dir jetzt die Code-Beispiele für list() und andere Python-Funktionen und -Methoden an!
Abid Ali Awan's photo

Abid Ali Awan

7 Min.

Tutorial

Python Switch Case Statement: Ein Leitfaden für Anfänger

Erforsche Pythons match-case: eine Anleitung zu seiner Syntax, Anwendungen in Data Science und ML sowie eine vergleichende Analyse mit dem traditionellen switch-case.
Matt Crabtree's photo

Matt Crabtree

5 Min.

Mehr AnzeigenMehr Anzeigen