Graafiline liides(Tkinter, CustomTkinter)

Tkinter on Pythonisse sisseehitatud moodul, millega saab luua graafilisi aknaid, nuppe, sisestusvälju ja palju muud. See põhineb Tcl/Tk teekidel ja on vaikimisi olemas kõigis Python’i standardpaigaldustes.

Põhiprintsiibid:

Tkinter’i kasutamine põhineb järgmisel loogikal:

Loo põhiaken (Tk)
Lisa sinna vidinad (nupud, sildid, sisestusväljad jne)
Käivita sündmuste tsükkel (mainloop)

Lihtne näide: Põhistruktuur:

import tkinter as tk
 
# Loo põhiaken
aken = tk.Tk()
aken.title("Minu esimene GUI")
aken.geometry("300x200")
 
# Lisa tekstisilt
silt = tk.Label(aken, text="Tere, maailm!")
silt.pack()
 
# Käivita rakendus
aken.mainloop()

Label – Tekstiväli

silt =tk.Label(aken,text="See on tekst",fg="blue",font=("Arial",14))
silt.pack()

Button – Nupp

def vajutati():
    print("Nuppu vajutati!")
 
nupp = tk.Button(aken, text="Vajuta mind", command=vajutati)
nupp.pack()

Entry – Sisestusväli

sisestus = tk.Entry(aken)
sisestus.pack()

Text – Mitmerealine tekstikast

tekstikast = tk.Text(aken, height=5, width=30)
tekstikast.pack()

Checkbutton – Märkeruut

valik = tk.IntVar()
märk = tk.Checkbutton(aken, text="Valik", variable=valik)
märk.pack()

istbox – Valikuloend

import tkinter as tkaken = tk.Tk()aken.title("Listbox näide")
# Loendi loomine
loend = tk.Listbox(aken)
for vili in ["Õun", "Banaan", "Apelsin", "Ploom"]:
    loend.insert(tk.END, vili)
loend.pack()

# Valiku näitamine
def näita_valik():
    try:
        valitud = loend.get(loend.curselection())
        silt.config(text=f"Valisid: {valitud}")
    except:
        silt.config(text="Palun vali midagi!")

tk.Button(aken, text="Näita valikut", command=näita_valik).pack()
silt = tk.Label(aken)
silt.pack()

aken.mainloop()

Paigutusmeetodid

pack() – lihtne järjestus

tk.Label(aken, text="Üks").pack()
tk.Button(aken, text="Kaks").pack()

grid() – täpne paigutus ridade ja veergudega

tk.Label(aken, text="Eesnimi:").grid(row=0, column=0)
tk.Entry(aken).grid(row=0, column=1)

place() – paigutus x/y koordinaatide järgi

tk.Label(aken, text="Käsitsi paigutus").place(x=50, y=30)

⚠️ Ära kasuta pack() ja grid()/place() samas konteineris!

CustomTkinter:

CustomTkinteril on sama rakendus kui tavalisel Tkinteril, kuid selle nuppude taustad ja ikoonid on ilusamad ja tõsisemad!

Näidis:

import customtkinter as ctk
 
# Valikuline: tee tume või hele teema
ctk.set_appearance_mode("System")  # "Dark", "Light", "System"
ctk.set_default_color_theme("blue")  # või "green", "dark-blue"
 
# Aken
app = ctk.CTk()
app.title("CustomTkinter näidis")
app.geometry("400x300")
 
# Silt
label = ctk.CTkLabel(app, text="Tere tulemast!", font=("Arial", 20))
label.pack(pady=20)
 
# Sisend
entry = ctk.CTkEntry(app, placeholder_text="Sisesta midagi...")
entry.pack(pady=10)
 
# Nupp
def nupp_vajutatud():
    sisend = entry.get()
    label.configure(text=f"Tere, {sisend}!")
 
button = ctk.CTkButton(app, text="Kinnita", command=nupp_vajutatud)
button.pack(pady=10)
 
# Käivitamine
app.mainloop()