Teema “Graafiline liides (Tkinter, Custom Tkinter, jne)”

Eesti keel:

Tkinter – GUI loomine

Mõiste: Pythoni sisseehitatud moodul graafiliste liideste loomiseks (tkinter).
Põhitõed:
  • Akna loomine: aken = tk.Tk(), seaded: aken.title(), aken.geometry().
  • Käivitus: aken.mainloop().
Vidinad:
  • Label: Tekst (tk.Label(aken, text=”Tekst”)).
  • Button: Nupp (tk.Button(aken, text=”Vajuta”, command=funktsioon)).
  • Entry: Sisestusväli (tk.Entry(aken)).
  • Text: Mitmerealine tekst (tk.Text(aken)).
  • Checkbutton: Märkeruut (tk.Checkbutton(aken, variable=var)).
  • Listbox: Valikuloend.
Paigutusmeetodid:
  • pack(): Järjestikune.
  • grid(): Tabel (row, column).
  • place(): Koordinaatidega (x, y).
Sündmused (bind):
  • <Button-1>: Vasak hiireklõps.
  • <Key>: Klahvivajutus.
  • <Motion>: Hiire liikumine.
Näide: aken.bind(“<Key>”, lambda event: print(event.char)).
Näide: Vorm
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

Paigaldus: pip install customtkinter.
Seaded: set_appearance_mode(“Light/Dark/System”), set_default_color_theme(“blue”).
Vidinad:
  • CTkLabel: Tekst.
  • CTkButton: Nupp.
  • CTkEntry: Sisestusväli.
  • CTkTextbox: Mitmerealine tekst.
  • CTkCheckBox: Märkeruut.
  • CTkSwitch: Lüliti.
  • CTkSlider: Liugur.
  • CTkProgressBar: Edenemisriba.
  • CTkOptionMenu: Rippmenüü.
  • CTkFrame: Konteiner.
Näide sakidega:
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:
  • Salvestamine: filedialog.asksaveasfilename().
  • Avamine: filedialog.askopenfilename().
  • Teavitused: messagebox.showinfo().

Vene keel:

Tkinter – Создание GUI

Определение: Встроенный модуль Python для создания графических интерфейсов (tkinter).
Основы:
  • Создание окна: aken = tk.Tk(), настройка: aken.title(), aken.geometry().
  • Запуск: aken.mainloop().
Виджеты:
  • Label: Текст (tk.Label(aken, text=”Текст”)).
  • Button: Кнопка (tk.Button(aken, text=”Нажми”, command=функция)).
  • Entry: Поле ввода (tk.Entry(aken)).
  • Text: Многострочный текст (tk.Text(aken)).
  • Checkbutton: Чекбокс (tk.Checkbutton(aken, variable=var)).
  • Listbox: Список с выбором.
Методы размещения:
  • pack(): Последовательное.
  • grid(): Табличное (row, column).
  • place(): По координатам (x, y).
События (bind):
  • <Button-1>: Левый клик мыши.
  • <Key>: Нажатие клавиши.
  • <Motion>: Движение мыши.
Пример: aken.bind(“<Key>”, lambda event: print(event.char)).
Пример: Форма
import tkinter as tk
def tervita():
    silt.configure(text=f"Привет, {sisestus.get()}!")
aken = tk.Tk()
aken.title("Форма приветствия")
tk.Label(aken, text="Введите имя:").pack()
sisestus = tk.Entry(aken)
sisestus.pack()
tk.Button(aken, text="Поприветствовать", command=tervita).pack()
silt = tk.Label(aken)
silt.pack()
aken.mainloop()

CustomTkinter

Установка: pip install customtkinter.
Настройки: set_appearance_mode(“Light/Dark/System”), set_default_color_theme(“blue”).
Виджеты:
  • CTkLabel: Текст.
  • CTkButton: Кнопка.
  • CTkEntry: Поле ввода.
  • CTkTextbox: Многострочный текст.
  • CTkCheckBox: Чекбокс.
  • CTkSwitch: Переключатель.
  • CTkSlider: Ползунок.
  • CTkProgressBar: Индикатор прогресса.
  • CTkOptionMenu: Выпадающий список.
  • CTkFrame: Контейнер.
Пример с вкладками:
import customtkinter as ctk
app = ctk.CTk()
tabs = ctk.CTkTabview(app)
tabs.add("Главная")
tabs.add("Настройки")
label = ctk.CTkLabel(tabs.tab("Главная"), text="Добро пожаловать!")
label.pack()
slider = ctk.CTkSlider(tabs.tab("Настройки"), from_=0, to=1)
slider.pack()
app.mainloop()
Работа с файлами:
  • Сохранение: filedialog.asksaveasfilename().
  • Открытие: filedialog.askopenfilename().
  • Уведомления: messagebox.showinfo().