CodeGym /Kurslar /Python SELF AZ /Düymələrin basılması hadisələrinin işlənməsi

Düymələrin basılması hadisələrinin işlənməsi

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

1. Eventlərin işlənməsi anlayışı

Qrafik interfeysli tətbiqlərdə eventlərin işlənməsi istifadəçi ilə proqramın qarşılıqlı əlaqəsinin əsas mexanizmidir. İstifadəçi düyməni klikləyəndə, mətn daxil edəndə və ya sadəcə kursoru hərəkət etdirəndə tətbiqdə eventlər baş verir. Bu eventlər funksiyaları işə sala bilər, interfeysi dəyişə bilər və hətta proqramın iş prinsipini tamamilə dəyişə bilər. Təsəvvür et ki, sən pitsaları məharətlə jonglörlük edən bir dostsan və hər bir pitza – isti-isti işlənməli olan bir eventdir!

Düymələrin kliklənməsi ilə funksiyaların çağırılması

Gəlin sadədən başlayaq: düyməni funksiya ilə necə əlaqələndirməliyik? Məntiq sadədir: düyməni yaradırıq, klikləməyi tuturuq və Python sehrini işə salırıq. Əvvəlcə bir neçə düyməsi olan sadə bir pəncərə yaradaq.


import tkinter as tk

def say_hello():
    print("Salam, istifadəçi!")

def count_clicks():
    global count
    count += 1
    print(f"Düymə {count} dəfə klikləndi.")

# Baş pəncərəni yaradırıq
root = tk.Tk()
root.title("Eventlərin işlənməsi")
root.geometry("300x200")

# Salam üçün düymə yaradırıq
hello_button = tk.Button(root, text="Salam de", command=say_hello)
hello_button.pack(pady=10)

# Kliklənmələri sayma düyməsi yaradırıq
count = 0
count_button = tk.Button(root, text="Klikləri say", command=count_clicks)
count_button.pack(pady=10)

# Tətbiqin əsas loopunu işə salırıq
root.mainloop()

Bu nümunədə "Salam de" düyməsini klikləməklə konsola mesaj çıxır, "Klikləri say" düyməsini klikləməklə isə kliklərin sayı sayılır.

2. Hadisələrin widget'larla bağlanması

Tkinter-də hadisələr təkcə düymələrlə deyil, həmçinin daxil etmə sahələri, checkbox'lar və label'lər kimi digər widget'larla da bağlana bilər. Bu, tətbiqlərinizin interfeys dəyişikliklərinə reaksiya verməsinə imkan tanıyır, təcrübəli aşpazların yanmış piroqun qoxusuna reaksiya verdikləri kimi.

Nümunə: düymənin basıldıqda rənginin dəyişdirilməsi

Gəlin nümunəmizi dəyişək ki, düymə basıldıqda öz rəngini dəyişsin.


def change_color():
    current_color = color_button.cget("bg")
    new_color = "sarı" if current_color == "qırmızı" else "qırmızı"
    color_button.config(bg=new_color)

color_button = tk.Button(root, text="Rəngi dəyiş", bg="qırmızı", command=change_color)
color_button.pack(pady=10)

İndi düymə hər dəfə basıldıqda rəngini dəyişəcək. Bu, istifadəçiyə hadisənin işlənildiyini vizual olaraq göstərməyin sadə bir nümunəsidir.

3. Hadisələrin praktik istifadəsi

Artıq funksiyaları hadisələrlə əlaqələndirməyi bacardığınız üçün, müxtəlif hadisələrə reaksiya verən interaktiv bir tətbiq yaratmağa çalışaq. Gəlin düyməyə basmaqla işə başlayan və dayanan taymeri olan bir tətbiq təsəvvür edək.

Taymer proqramı nümunəsi

Gəlin elə bir tətbiq yazaq ki, düyməyə basılmaqla saniyələri hesablayan bir taymer başlasın.


import time

def start_timer():
    global running
    if not running:
        running = True
        count_seconds()

def stop_timer():
    global running
    running = False

def count_seconds():
    if running:
        global seconds
        seconds += 1
        time_label.config(text=f"Keçən saniyələr: {seconds}")
        root.after(1000, count_seconds)

seconds = 0
running = False

start_button = tk.Button(root, text="Başlat", command=start_timer)
start_button.pack(side="left", padx=10)

stop_button = tk.Button(root, text="Dayandır", command=stop_timer)
stop_button.pack(side="right", padx=10)

time_label = tk.Label(root, text="Keçən saniyələr: 0")
time_label.pack(pady=20)

root.mainloop()

Bu nümunədə bizdə iki düymə var: "Başlat" və "Dayandır". "Başlat"a basmaq vaxtın hesablanmasını başlatır, "Dayandır"a basmaq isə onu dayandırır. `after` metodundan saniyə vaxtından sonra funksiyanın yenidən başladılmasını təmin etmək üçün istifadə edirik. Bu əsas tətbiq dövrünü bloklamadan digər tapşırıqları yerinə yetirməyə imkan verir.

4. Hadisələrin işlənməsində xəta mesajları

Bəzən proqramlar qəribə davrana bilər və bunun səbəbi hadisələrin işlənməsi məntiqindəki xətalardır. Məsələn, düymənin sıxılması məlumatların səhv işlənməsinə və ya arzuolunmaz nəticələrə səbəb ola bilər. Bütün mümkün istisnaları nəzərə almaq və istifadəçinin bütün hərəkətlərinin düzgün işlənməsini təmin etmək çox vacibdir.

İstisnaların işlənməsi nümunəsi

Taymer nümunəsinə istisnaların işlənməsini əlavə edək ki, məsələn, taymer artıq işləyərkən işə salınmaq problemi yaranmasın.


def start_timer():
    global running
    try:
        if not running:
            running = True
            count_seconds()
    except Exception as e:
        print(f"Taymerin işə salınmasında xəta: {e}")

def stop_timer():
    global running
    try:
        running = False
    except Exception as e:
        print(f"Taymerin dayandırılmasında xəta: {e}")

İndi, taymeri işə salma və ya dayandırma zamanı nəsə səhv gedərsə, xətalar haqqında ətraflı məlumatımız olacaq.

Hadisələrin işlənməsi — interaktiv GUI-tətbiqləri yaratmanın əsas hissəsidir. Bu, proqramınıza istifadəçi hərəkətlərinə reaksiya göstərməyə imkan verən bir şeydir və bu da tətbiqlərinizi daha dinamik və faydalı edir. Hadisələri funksiyalarla bağlamağın, interfeysi dəyişdirməyin və istifadəçi hərəkətlərinə reaksiya verməyin necə olduğunu izah edən bir neçə nümunə yaratdıq. Əgər bunu mənimsəsəniz, skript sizin dostunuz, xətalar isə çoxdan unudulmuş düşmənləriniz olacaq.

1
Опрос
Tkinter ilə GUI yaratmaq,  49 уровень,  4 лекция
недоступен
Tkinter ilə GUI yaratmaq
Tkinter ilə GUI yaratmaq
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION