- Mis on Tkinter
- Põhistruktuur
- Peamised vidinad ja nende kasutus
- Paigutusmeetodid
- Sündmuste käsitlemine bind() abil
- CustomTkinter – tänapäevane Tkinteri laiendus
Mis on Tkinter
Tkinter on Pythoni standardmoodul graafilise kasutajaliidese (GUI) loomiseks. See võimaldab kiiresti teha aknaid, nuppe, sisestusvälju jms ilma täiendava paigalduseta. Põhineb Tcl/Tk raamistikul.
Põhistruktuur
Tkinteris lood esmalt põhiakna (Tk()), lisad sinna vidinad (nupud, sildid, väljad) ja lõpuks käivitad sündmuste tsükli mainloop(), mis hoiab akna aktiivsena ja reageerib kasutaja tegevustele.
import tkinter as tk
aken = tk.Tk()
aken.title("Näide")
silt = tk.Label(aken, text="Tere maailm!")
silt.pack()
aken.mainloop()
Peamised vidinad ja nende kasutus
- Label – staatiline tekstiväli, kus kuvada infot või juhiseid.
- Button – vajutatav nupp, millele saab siduda funktsiooni.
- Entry – üherea tekstisisestus, kus kasutaja saab midagi kirjutada.
- Text – mitmerealine tekstiväli, sobib pikemaks sisendiks või logide kuvamiseks.
- Checkbutton – märkeruut, mis võimaldab jah/ei valikut teha.
Paigutusmeetodid
Tkinteris saab vidinaid paigutada kolme meetodiga:
- pack() – lihtne, järjestikune virnastamine.
- grid() – paigutus ridade ja veergude võrgustikuna.
- place() – täpne koordinaatide järgi paigutus.
Oluline: pack() ja grid() ei tohi segamini kasutada samas konteineris.
Sündmuste käsitlemine bind() abil
bind() võimaldab siduda funktsioone erinevate kasutaja tegevustega, nt hiireklõps või klahvivajutus. See annab kontrolli, kuidas programm kasutaja sisendile reageerib.
Näiteks hiire vasaku nupu klõps:
def klikk(event):
print(f"Klõps koordinaatidel: {event.x}, {event.y}")
aken.bind("<Button-1>", klikk)
CustomTkinter – tänapäevane Tkinteri laiendus
CustomTkinter annab kaasa tänapäevased, stiilsed ja kohandatavad vidinad (nupud, lülitid, sildid), mis sobivad paremini kaasaegsete rakenduste tegemiseks. Vajab eraldi paigaldust (pip install customtkinter).
Näide põhiaknast nuppude ja siltidega:
import customtkinter as ctk
app = ctk.CTk()
app.title("Näidis")
app.geometry("400x300")
label = ctk.CTkLabel(app, text="Tere tulemast!")
label.pack(pady=20)
entry = ctk.CTkEntry(app, placeholder_text="Sisesta midagi...")
entry.pack(pady=10)
def tervita():
nimi = entry.get()
label.configure(text=f"Tere, {nimi}!")
button = ctk.CTkButton(app, text="Kinnita", command=tervita)
button.pack(pady=10)
app.mainloop()