8.2 Teema Graafiline liides (Tkinter, Custom Tkinter jne)


Graafiline liides (Tkinter, CustomTkinter)

Tkinter – Pythoni sisseehitatud GUI moodul

  • Akna loomine: aken = tk.Tk() aken.title("Pealkiri") aken.geometry("laiusxkõrgus") aken.mainloop()
  • Peamised vidinad (widgetid):
    • Label: tekst, nt tk.Label(aken, text="Tekst")
    • Button: nupp, nt tk.Button(aken, text="Vajuta", command=funktsioon)
    • Entry: sisestusväli, nt tk.Entry(aken)
    • Text: mitmerealine tekst
    • Checkbutton: märkeruut
    • Listbox: valikuloend

Paigutusmeetodid

  • pack(): järjestikune paigutus
  • grid(): tabeli paigutus (rida ja veerg)
  • place(): koordinaatide järgi (x, y)

Sündmuste sidumine (bind)

  • Näited:
    • <Button-1>: vasak hiireklõps
    • <Key>: klahvivajutus
    • <Motion>: hiire liikumine
  • Näide: aken.bind("<Key>", lambda event: print(event.char))

Näide: lihtne tervitusvorm

import tkinter as tk

def tervita():
    silt.configure(text=f"Tere, {sisestus.get()}!")

aken = tk.Tk()
aken.title("Tervitusvorm")

tk.Label(aken, text="Sisesta nimi:").pack()
sisestus = tk.Entry(aken)
sisestus.pack()

tk.Button(aken, text="Tervita", command=tervita).pack()
silt = tk.Label(aken)
silt.pack()

aken.mainloop()


CustomTkinter

  • Installatsioon: pip install customtkinter
  • Seaded: ctk.set_appearance_mode("Light") # või "Dark", "System" ctk.set_default_color_theme("blue")
  • Peamised vidinad:
    • CTkLabel, CTkButton, CTkEntry, CTkTextbox, CTkCheckBox, CTkSwitch, CTkSlider, CTkProgressBar, CTkOptionMenu, CTkFrame

Näide sakidega (Tabs)

import customtkinter as ctk

app = ctk.CTk()
tabs = ctk.CTkTabview(app)
tabs.add("Pealeht")
tabs.add("Seaded")

label = ctk.CTkLabel(tabs.tab("Pealeht"), text="Tere tulemast!")
label.pack()

slider = ctk.CTkSlider(tabs.tab("Seaded"), from_=0, to=1)
slider.pack()

app.mainloop()


Töö failidega

  • Faili salvestamine: from tkinter import filedialog failinimi = filedialog.asksaveasfilename()
  • Faili avamine: failinimi = filedialog.askopenfilename()
  • Teavitused: from tkinter import messagebox messagebox.showinfo("Pealkiri", "Sõnum")