8.2 Graafiline liides(Tkinter, CustomTkinter jne)

  1. Mis on Tkinter
  2. Põhistruktuur
  3. Peamised vidinad ja nende kasutus
  4. Paigutusmeetodid
  5. Sündmuste käsitlemine bind() abil
  6. 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()

JÄRGMINE TEEMA