🎯 الهدف من الدرس:
أن تتعلم كيف تجعل البرنامج يتفاعل مع أحداث المستخدم (مثل النقر، المرور بالفأرة، الضغط على لوحة المفاتيح...) باستخدام الدالة bind().
🧠 ما المقصود بـ Event؟
الحدث (Event) هو أي تصرف يقوم به المستخدم داخل نافذتك، مثل:
- النقر بالماوس (
<Button-1>) - تمرير الفأرة فوق عنصر (
<Enter>) - مغادرة الفأرة عنصرًا معينًا (
<Leave>) - الضغط على مفتاح من لوحة المفاتيح (
<Key>)
✅ الصيغة العامة:
widget.bind("نوع_الحدث", دالة_الاستجابة)
مثال:
button.bind("<Button-1>", show_message)
✅ الكود التطبيقي:
import tkinter as tk
# إنشاء نافذة
window = tk.Tk()
window.title("أحداث المستخدم")
window.geometry("300x200")
# عنصر واجهة: زر
btn = tk.Button(window, text="اضغط بزر الماوس")
btn.pack(pady=30)
# دالة عند النقر بزر الماوس الأيسر
def on_click(event):
print("تم النقر على الزر بزر الماوس الأيسر!")
# دالة عند مرور الفأرة
def on_hover(event):
btn.config(text="مررت الفأرة هنا!")
# دالة عند مغادرة الفأرة
def on_leave(event):
btn.config(text="اضغط بزر الماوس")
# ربط الأحداث
btn.bind("<Button-1>", on_click) # نقرة زر أيسر
btn.bind("<Enter>", on_hover) # مرور الفأرة
btn.bind("<Leave>", on_leave) # مغادرة الفأرة
# تشغيل النافذة
window.mainloop()
✳️ أهم أحداث يمكنك استخدامها:
| الحدث | الوصف |
|---|---|
<Button-1> |
نقر بزر الماوس الأيسر |
<Button-2> |
نقر بزر الماوس الأوسط |
<Button-3> |
نقر بزر الماوس الأيمن |
<Double-1> |
نقر مزدوج بزر الماوس الأيسر |
<Enter> |
عند مرور الفأرة فوق عنصر |
<Leave> |
عند مغادرة الفأرة لعنصر |
<Key> |
عند الضغط على أي مفتاح من لوحة المفاتيح |
<KeyPress-a> |
عند الضغط على مفتاح a |
🎓 ملاحظات مهمة:
- الحدث يُمرّر تلقائيًا كـ
eventإلى الدالة. - يمكن من
eventمعرفة معلومات إضافية مثل الموقع أو المفتاح.
✅ التمرين:
إنشاء واجهة تحتوي على زر، وعند النقر عليه بزر الماوس الأيمن تظهر رسالة في الـ
Label، وعند مرور الفأرة عليه يتغير لونه.🎯 المتطلبات:
- زر في منتصف النافذة.
- عند النقر بزر الماوس الأيمن عليه، يظهر نص في
Labelيقول: "نقرت بزر الماوس الأيمن!" - عند مرور الفأرة عليه، يتغير لونه إلى الأخضر.
- عند مغادرة الفأرة، يعود إلى لونه الأصلي.
✅ الحل الكامل:
import tkinter as tk
# إنشاء النافذة
window = tk.Tk()
window.title("تمرين الأحداث")
window.geometry("350x250")
# === العناصر ===
label = tk.Label(window, text="", font=("Arial", 12))
label.pack(pady=10)
btn = tk.Button(window, text="انقر بزر الماوس الأيمن", width=25)
btn.pack(pady=40)
# === دوال الأحداث ===
def right_click(event):
label.config(text="نقرت بزر الماوس الأيمن!")
def on_hover(event):
btn.config(bg="lightgreen")
def on_leave(event):
btn.config(bg="SystemButtonFace") # اللون الافتراضي للأزرار
# === ربط الأحداث ===
btn.bind("<Button-3>", right_click) # نقر بزر الماوس الأيمن
btn.bind("<Enter>", on_hover) # تمرير الفأرة
btn.bind("<Leave>", on_leave) # مغادرة الفأرة
# تشغيل التطبيق
window.mainloop()
✅ شرح سريع:
| الجزء | الوظيفة |
|---|---|
<Button-3> |
يلتقط النقر بزر الماوس الأيمن |
<Enter> |
عند دخول مؤشر الفأرة فوق الزر |
<Leave> |
عند مغادرة مؤشر الفأرة الزر |
label.config(text=...) |
تحديث نص العنصر Label |
btn.config(bg=...) |
تغيير لون خلفية الزر |

