CodeGym /Kurslar /Python SELF AZ /Checkboxlar, radiobuttonlar və switchlər ilə işləmək

Checkboxlar, radiobuttonlar və switchlər ilə işləmək

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Checkbox-lar (Checkbutton)

Checkbox – kvadrat düymədir, hansı ki, ya aktiv, ya da deaktiv vəziyyətdə ola bilər. İstifadəçiyə bir və ya bir neçə seçim təqdim etmək lazım olduqda çox faydalıdır.

Checkbox yaratmaq

Checkbox yaratmaq üçün Checkbutton widget-dən istifadə olunur. Checkbox-un vəziyyətini (işarələnib və ya işarələnməyib) izləmək üçün adətən IntVar tipində dəyişən istifadə olunur. Bu dəyişən checkbox işarələnibsə 1 olur, işarələnməyibsə 0.

Python
import tkinter as tk

# Checkbox-un vəziyyətini yoxlamaq üçün funksiya
def show_status():
    print("Aktivdir" if var.get() == 1 else "Deaktivdir")

# Pəncərə yaratmaq
root = tk.Tk()
root.title("Checkbox nümunəsi")

# Vəziyyəti saxlamaq üçün dəyişən
var = tk.IntVar()

# var dəyişəninə bağlı checkbox
checkbox = tk.Checkbutton(root, text="Seçimi aktiv edin", variable=var, command=show_status)
checkbox.pack(pady=20)

root.mainloop()

Kodun izahı

  • variable=var: Checkbox-u var dəyişəninə bağlayır, hansı ki, checkbox-un hər bir vəziyyət dəyişikliyində yenilənir.
  • show_status() funksiyası: Console-a checkbox-un cari vəziyyətini göstərir. Əgər checkbox işarələnibsə "Aktivdir" çıxır, əks halda — "Deaktivdir".

Bir neçə checkbox istifadə edilməsi

Əgər bir neçə müstəqil seçim lazımdırsa, hər biri öz dəyişəninə bağlı bir neçə checkbox yarada bilərsiniz.

Python
# Vəziyyəti saxlamaq üçün dəyişənlər
option1 = tk.IntVar()
option2 = tk.IntVar()

# Checkbox-lar
check1 = tk.Checkbutton(root, text="Seçim 1", variable=option1)
check2 = tk.Checkbutton(root, text="Seçim 2", variable=option2)
check1.pack()
check2.pack()

2. Radiobutton (Radiobutton)

Radiobutton – istifadəçinin yalnız birini seçə biləcəyi yuvarlaq düymələrdən ibarət dəstdir. Onlar, istifadəçiyə bir neçə variantdan birini seçmək lazım olduqda faydalıdır.

Radiobutton yaradılması

Radiobutton yaratmaq üçün Radiobutton widjeti istifadə olunur. Radiobutton-ları əlaqələndirmək və seçimlərini bir-birindən asılı etmək üçün onların hamısı bir dəyişənə (IntVar və ya StringVar) bağlı olmalıdır.

Python
# Seçilmiş variantı göstərən funksiya
def show_choice():
    print(f"Seçilmiş variant {choice.get()}")

# Seçimi izləmək üçün dəyişən
choice = tk.IntVar()

# Radiobutton-lar
radio1 = tk.Radiobutton(root, text="Variant 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Variant 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Variant 3", variable=choice, value=3, command=show_choice)

radio1.pack()
radio2.pack()
radio3.pack()

Kodun izahı

  • variable=choice: Bütün radiobutton-ları bir dəyişənə choice bağlayır ki, onları bir-birindən asılı etsin.
  • value: İstifadəçi bu radiobutton-u seçərsə, dəyişənin choice alacağı dəyəri göstərir.
  • show_choice() funksiyası: Konsolda seçilmiş variantı göstərir.

Mətn dəyərləri olan radiobutton-lar

Radiobutton-ları StringVar tipli dəyişənə də bağlaya bilərsiniz ki, mətn dəyərlərindən istifadə edəsiniz.

Python
# Mətn seçimi üçün dəyişən
color_choice = tk.StringVar()

# Mətn dəyərləri olan radiobutton-lar
radio_red = tk.Radiobutton(root, text="Qırmızı", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="Mavi", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="Yaşıl", variable=color_choice, value="Green")

radio_red.pack()
radio_blue.pack()
radio_green.pack()

3. Keçid düymələri (Spinbox)

Keçid düymələri istifadəçiyə diapazondan sayısal bir dəyəri seçməyə imkan verir. Bu vidjet yaş və ya miqdar kimi sayısal məlumatların daxil edilməsi üçün faydalıdır.

Keçid düyməsinin yaradılması

Tkinter-də keçid düyməsi Spinbox vidjeti istifadə edilərək yaradılır, bu da istifadəçiyə dəyəri əl ilə daxil etməyə və ya oxlarla seçməyə imkan verir.

Python
# Seçilmiş dəyəri göstərmək üçün funksiya
def show_spin_value():
    print(f"Dəyər: {spin.get()}")

# 1-dən 10-a qədər keçid düyməsi
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)

Kodun izahı

  • from_to: Keçid düyməsi üçün dəyər aralığını müəyyən edir.
  • show_spin_value() funksiyası: Hər dəyişiklikdə seçilmiş dəyəri konsolda göstərir.

Addım və dəyərlərin tənzimlənməsi

increment parametri keçid düyməsinin addımını müəyyən etməyə imkan verir, values isə xüsusi dəyərləri təyin etməyə imkan verir.

Python
# 2 addım ilə keçid düyməsi
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)

# Xüsusi dəyərlərlə keçid düyməsi
spin_values = tk.Spinbox(root, values=("Kiçik", "Orta", "Böyük"))
spin_values.pack(pady=5)

4. Tətbiq nümunəsi

Checkbox-lar, radio düymələr və dəyişdiricilər olan tətbiq nümunəsi

İndi hər şeyi bir yerə yığaq və checkbox-lar, radio düymələr və dəyişdiricilər olan interfeys yaradaq ki, istifadəçi bir neçə seçim edə bilsin və nəticəni görə bilsin.

Python
import tkinter as tk

# Əsas pəncərənin yaradılması
root = tk.Tk()
root.title("Checkbox-lar, radio düymələr və dəyişdiricilər ilə nümunə")
root.geometry("300x300")

# Seçilən dəyərlərin göstərilməsi üçün funksiyalar
def show_selections():
    selections = []
    selections.append(f"Checkbox aktivdir: {'Bəli' if option.get() == 1 else 'Xeyr'}")
    selections.append(f"Seçilmiş rəng: {color_choice.get()}")
    selections.append(f"Say: {spin.get()}")
    message_label.config(text="\n".join(selections))

# Checkbox
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Seçimi aktivləşdir", variable=option)
checkbox.pack(pady=5)

# Radio düymələr
color_choice = tk.StringVar(value="Qırmızı")
tk.Label(root, text="Rəng seçin:").pack()
radio_red = tk.Radiobutton(root, text="Qırmızı", variable=color_choice, value="Qırmızı")
radio_blue = tk.Radiobutton(root, text="Mavi", variable=color_choice, value="Mavi")
radio_green = tk.Radiobutton(root, text="Yaşıl", variable=color_choice, value="Yaşıl")
radio_red.pack()
radio_blue.pack()
radio_green.pack()

# Dəyişdirici
tk.Label(root, text="Say:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)

# Seçilmiş dəyərləri göstərmək üçün düymə
show_button = tk.Button(root, text="Seçimləri göstər", command=show_selections)
show_button.pack(pady=10)

# Nəticələrin göstərilməsi üçün label
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)

root.mainloop()

Tam nümunənin izahı

  • Checkbox: "Seçimi aktivləşdir" vəziyyətini işarələyir.
  • Radio düymələr: Üç rəngdən birini seçməyə imkan verir.
  • Dəyişdirici: 1-dən 10-a qədər say seçməyə imkan verir.
  • "Seçimləri göstər" düyməsi: Bütün widget-ların cari vəziyyətlərini message_label adlı label-ə çıxarır.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION