Koppla GUI till programlogik
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
| Moment | Exempel |
|---|---|
| Läsa från GUI | namn = entry.get() |
| Visa i GUI | label.config(text="...") |
| Anropa funktion | command=funktion_namn |
| Felhantering | try / except + ValueError |
| Rensa fält | entry.delete(0, END) |
| Reagera på indata | if / else beroende på vad användaren skrev |