🎓 الدرس 26 من Tkinter: عنصر MessageBox (رسائل التنبيه المنبثقة)

🎯 سنتعلم اليوم كيفية استخدام نوافذ التنبيه (Message Boxes) في Tkinter لعرض رسائل منبثقة مثل:

  • رسالة معلومات (Information)
  • تحذير (Warning)
  • خطأ (Error)
  • سؤال (Yes/No)
🎓 الدرس 26 من Tkinter: عنصر MessageBox (رسائل التنبيه المنبثقة)

🧱 ما هو MessageBox؟

عنصر ليس مرئيًا مباشرة، لكنه يستخدم لإظهار رسائل منبثقة للمستخدم عند الحاجة.

يتم استيراده من مكتبة tkinter.messagebox.


📦 الصيغة العامة:

from tkinter import messagebox
messagebox.showinfo("العنوان", "الرسالة")

📌 أشهر أنواع الرسائل:

النوع الوظيفة
showinfo() عرض رسالة معلومات
showwarning() عرض رسالة تحذير
showerror() عرض رسالة خطأ
askquestion() سؤال المستخدم (نعم/لا)
askyesno() سؤال المستخدم ويعيد True أو False

✅ مثال عملي:

import tkinter as tk
from tkinter import messagebox

def عرض_معلومات():
    messagebox.showinfo("معلومة", "هذا مثال على رسالة معلومات.")

def عرض_تحذير():
    messagebox.showwarning("تحذير", "هل أنت متأكد من هذا الإجراء؟")

def عرض_خطأ():
    messagebox.showerror("خطأ", "حدث خطأ أثناء تنفيذ العملية!")

def سؤال():
    إجابة = messagebox.askyesno("تأكيد", "هل تريد الخروج؟")
    if إجابة:
        window.quit()

# النافذة
window = tk.Tk()
window.title("Messagebox مثال")
window.geometry("300x250")

# أزرار لعرض أنواع مختلفة من الرسائل
tk.Button(window, text="معلومة", command=عرض_معلومات).pack(pady=5)
tk.Button(window, text="تحذير", command=عرض_تحذير).pack(pady=5)
tk.Button(window, text="خطأ", command=عرض_خطأ).pack(pady=5)
tk.Button(window, text="سؤال (نعم/لا)", command=سؤال).pack(pady=5)

window.mainloop()

💡 ملاحظات سريعة:

الدالة تستخدم لـ
showinfo() تنبيه المستخدم بمعلومة
askyesno() الاستفسار منه وإعادة True/False
messagebox.ask... دائمًا تُعيد قيمة يمكن استخدامها في شرط


✅ التمرين: "تأكيد الخروج من التطبيق"

🎯 المطلوب:

  1. أنشئ نافذة بها زر مكتوب عليه: "خروج".
  2. عند الضغط على الزر، يظهر صندوق حوار يسأل المستخدم:
    هل تريد الخروج من التطبيق؟
  3. إذا اختار "نعم"، يُغلق التطبيق.
    إذا اختار "لا"، تبقى النافذة كما هي.

🧾 الحل الكامل:

import tkinter as tk
from tkinter import messagebox

def تأكيد_الخروج():
    تأكيد = messagebox.askyesno("تأكيد الخروج", "هل أنت متأكد أنك تريد الخروج؟")
    if تأكيد:
        window.destroy()

# إنشاء النافذة
window = tk.Tk()
window.title("تطبيق تأكيد الخروج")
window.geometry("300x150")

# زر الخروج
زر = tk.Button(window, text="خروج", font=("Arial", 14), command=تأكيد_الخروج)
زر.pack(pady=40)

# تشغيل النافذة
window.mainloop()

💡 الشرح:

السطر الوظيفة
messagebox.askyesno() يُظهر سؤالًا ويعيد True إذا اختار المستخدم "نعم"
window.destroy() يُغلق التطبيق تمامًا
command=... يربط الزر بدالة التأكيد

✅ النتيجة:

عند الضغط على زر "خروج"، تظهر رسالة:

[هل أنت متأكد أنك تريد الخروج؟]  [نعم] [لا]
  • إذا اختار المستخدم "نعم" → يُغلق التطبيق.
  • إذا اختار "لا" → لا يحدث شيء.


إرسال تعليق

0 تعليقات