Att skapa ett fönster, lägga till knappar och etiketter är bara halva jobbet. Det viktigaste är att du kopplar funktioner och logik till gränssnittet – så att programmet faktiskt gör något.


Vad menas med logik?

Programlogik kan vara:

  • att beräkna ett värde (t.ex. räkna ut ålder)
  • att validera indata (t.ex. kolla om ålder är ett tal)
  • att visa olika svar beroende på vad användaren gör
  • att ändra GUI:t när något händer (t.ex. visa en varning, rensa fält)

Exempel 1 – Räkna ut kvadrat av ett tal

import tkinter as tk

root = tk.Tk()
root.title("Kvadratkalkylator")

tk.Label(root, text="Skriv ett tal:").pack()

entry = tk.Entry(root)
entry.pack()

resultat = tk.Label(root, text="")
resultat.pack()

def räkna():
    try:
        tal = float(entry.get())
        kvadrat = tal * tal
        resultat.config(text=f"Kvadraten av {tal} är {kvadrat}")
    except ValueError:
        resultat.config(text="Du måste skriva ett tal!")

tk.Button(root, text="Räkna", command=räkna).pack(pady=5)

root.mainloop()

Vad vi gjort här:

  • Läser in ett tal från användaren (entry.get())
  • Omvandlar det till float
  • Räkna ut kvadraten
  • Visar resultatet i en etikett
  • Om användaren skriver något fel (t.ex. bokstäver) → visar felmeddelande

Exempel 2 – Rensa fält, kombinera funktioner

def rensa():
    entry.delete(0, tk.END)
    resultat.config(text="")

tk.Button(root, text="Rensa", command=rensa).pack()
  • Med entry.delete(0, END) tömmer vi textrutan
  • Med .config(text="") tar vi bort tidigare resultat

Exempel 3 – Enkla regler

Du kan också bygga in logik som ändrar svar beroende på indata, t.ex:

def kolla_namn():
    namn = entry.get()
    if namn.lower() == "admin":
        resultat.config(text="Välkommen, chef!")
    else:
        resultat.config(text=f"Hej {namn}!")

Sammanfattning – koppling mellan GUI och logik

MomentExempel
Läsa från GUInamn = entry.get()
Visa i GUIlabel.config(text="...")
Anropa funktioncommand=funktion_namn
Felhanteringtry / except + ValueError
Rensa fältentry.delete(0, END)
Reagera på indataif / else beroende på vad användaren skrev