messagebox – visa popup-meddelanden

Ibland vill vi inte bara visa text i en etikett – vi kanske vill visa ett popup-fönster, t.ex. när användaren skickar ett formulär, gör fel eller får ett resultat.

Det gör vi med messagebox, som finns i tkinter.messagebox.

import tkinter as tk
from tkinter import messagebox

root = tk.Tk()
root.title("Popup-exempel")

def visa_popup():
    messagebox.showinfo("Meddelande", "Du klickade på knappen!")

knapp = tk.Button(root, text="Visa popup", command=visa_popup)
knapp.pack()

root.mainloop()

Vanliga popup-typer:

FunktionBeskrivning
showinfo(titel, meddelande)Vanligt informationsfönster
showwarning(titel, meddelande)Gul triangel – varning
showerror(titel, meddelande)Rött kryss – felmeddelande
askyesno(...)Ger True/False beroende på användarens val

Exempel:

if messagebox.askyesno("Bekräfta", "Vill du verkligen avsluta?"):
    root.destroy()

grid – placera saker i rutnät

Hittills har vi använt pack() för att lägga widgets under varandra. Det är enkelt, men ger lite kontroll.

Med grid() kan vi placera saker i rader och kolumner, ungefär som i en tabell.

Exempel – Enkel formulärlayout med grid():

import tkinter as tk

root = tk.Tk()
root.title("grid()-exempel")

tk.Label(root, text="Namn:").grid(row=0, column=0)
entry_namn = tk.Entry(root)
entry_namn.grid(row=0, column=1)

tk.Label(root, text="Ålder:").grid(row=1, column=0)
entry_alder = tk.Entry(root)
entry_alder.grid(row=1, column=1)

def visa_info():
    namn = entry_namn.get()
    alder = entry_alder.get()
    tk.messagebox.showinfo("Information", f"{namn} är {alder} år gammal")

knapp = tk.Button(root, text="Visa info", command=visa_info)
knapp.grid(row=2, column=0, columnspan=2, pady=10)

root.mainloop()

Notera: columnspan=2 gör att knappen täcker båda kolumnerna

Sammanfattning grid():

EgenskapBeskrivning
row, columnPlacering i tabell
padx, padyAvstånd till andra widgets
stickyJustering i cell (t.ex. "w" för vänster)
columnspanBreder ut sig över flera kolumner

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)