Vad är ett GUI?

GUI står för Graphical User Interface – alltså ett grafiskt användargränssnitt.

Istället för att användaren skriver i terminalen, används knappar, textrutor, etiketter, menyer osv.
Exempel: kalkylatorn i Windows, en app med knappar eller ett bokningssystem med formulär.


Vad är tkinter?

tkinter är ett inbyggt Python-bibliotek för att skapa enkla GUI-program.
Du behöver inte installera något extra – det finns med i standard-Python.

Steg 1 – Skapa ett fönster

import tkinter as tk

root = tk.Tk()
root.title("Mitt första GUI")
root.mainloop()

Förklaring:

  • tk.Tk() skapar själva huvudfönstret
  • .title() sätter titeln i fönstrets kant
  • .mainloop() startar gränssnittet – måste ligga sist
    (programmet fortsätter “vänta” på användarens klick)

Steg 2 – Lägg till en etikett (Label)

import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text="Hej och välkommen!")
label.pack()

root.mainloop()

Förklaring:

  • Label() skapar en textetikett
  • pack() placerar den i fönstret

Steg 3 – Lägg till en knapp (Button)

def klicka():
    print("Knappen trycktes!")

button = tk.Button(root, text="Tryck här", command=klicka)
button.pack()
  • command=klicka kopplar knappen till en funktion
  • När knappen klickas → funktionen körs

Steg 4 – Textruta (Entry) + läsa indata

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

def visa_text():
    text = entry.get()
    print("Du skrev:", text)

knapp = tk.Button(root, text="Skriv ut", command=visa_text)
knapp.pack()
  • Entry() = textruta för att mata in text
  • .get() = hämta det användaren skrev

Steg 5 – Skriva ut text i GUI (inte i terminalen)

Hittills har vi använt print() för att skriva ut texten i terminalen, men i ett grafiskt program vill vi ofta att användaren ser svaret direkt i fönstret.

Det gör vi genom att uppdatera en Label med ny text.

import tkinter as tk

root = tk.Tk()
root.title("Skriv och visa")
root.geometry("300x200")

etikett1 = tk.Label(root, text="Skriv något:")
etikett1.pack()

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

# Denna etikett kommer vi uppdatera senare
resultat = tk.Label(root, text="", fg="blue")
resultat.pack()

def visa_text():
    text = entry.get()
    resultat.config(text="Du skrev: " + text)

knapp = tk.Button(root, text="Visa i fönstret", command=visa_text)
knapp.pack()

root.mainloop()

Förklaring:

  • resultat = tk.Label(...) skapar en tom etikett där vi kan visa texten
  • resultat.config(...) ändrar texten när vi klickar på knappen
  • fg="blue" gör texten blå (valfritt)

Sammanfattning hittills

DelVad det gör
LabelVisar text i fönstret
EntryLåter användaren skriva in något
ButtonKör en funktion när du klickar
.get()Hämtar text från en Entry
.config()Ändrar text eller egenskaper i en widget

Dokumentation för tkinter

Officiell Python tkinter-dokumentation (svår men komplett):
https://docs.python.org/3/library/tkinter.html

TkDocs – nybörjarvänlig tkinter-guide:
https://tkdocs.com/tutorial/index.html

Vanliga tkinter-komponenter och inställningar

Widget / metodBeskrivning / användningExempel
LabelVisar text i fönstretLabel(root, text="Hej")
EntryEn rad där användaren kan skriva textEntry(root)
ButtonSkapar en klickbar knappButton(root, text="Klicka", command=func)
.pack()Automatisk placering (enkelt)widget.pack()
.grid(row=, column=)Placering i rutnät (mer kontroll)widget.grid(row=0, column=1)
.get()Hämtar text från Entryentry.get()
.config(...)Ändrar egenskaper i efterhandlabel.config(text="Ny text")
fgFärg på textenLabel(..., fg="red")
bgBakgrundsfärgLabel(..., bg="lightgray")
font=("Font", storlek)Ändrar textstil och storlekLabel(..., font=("Arial", 14))
command=namn_på_funktionVad som ska hända när en knapp klickasButton(..., command=min_funktion)
pady, padxAvstånd runt widget (padding)widget.pack(pady=10)