🎓 الدرس 25 من Tkinter: عنصر Menu (قائمة منسدلة)

🎯 الهدف: تعلم كيفية إنشاء قوائم منسدلة (Menu bar) في تطبيق Tkinter، مثل "ملف" و"تحرير" وغيرها، التي نراها في معظم البرامج.

🎓 الدرس 25 من Tkinter: عنصر Menu (قائمة منسدلة)

🧱 ما هو Menu؟

عنصر يستخدم لإنشاء شريط قوائم في أعلى النافذة يحتوي على خيارات قابلة للنقر، مثل:

  • "ملف File"
  • "تحرير Edit"
  • "مساعدة Help"

يمكن لكل قائمة أن تحتوي على أوامر فرعية.


📌 الصيغة الأساسية:

menu = tk.Menu(window)
window.config(menu=menu)

ثم نضيف العناصر مثل:

file_menu = tk.Menu(menu, tearoff=0)
file_menu.add_command(label="فتح")
file_menu.add_command(label="حفظ")
menu.add_cascade(label="ملف", menu=file_menu)

✅ مثال عملي بسيط:

import tkinter as tk

def جديد():
    label.config(text="🗂️ ملف جديد تم إنشاؤه")

def حفظ():
    label.config(text="💾 تم حفظ الملف")

def خروج():
    window.quit()

# النافذة
window = tk.Tk()
window.title("مثال على Menu")
window.geometry("350x200")

# عنصر القائمة الأساسي
menu = tk.Menu(window)
window.config(menu=menu)

# قائمة "ملف"
file_menu = tk.Menu(menu, tearoff=0)
file_menu.add_command(label="جديد", command=جديد)
file_menu.add_command(label="حفظ", command=حفظ)
file_menu.add_separator()
file_menu.add_command(label="خروج", command=خروج)

# إضافة "ملف" إلى القائمة الرئيسية
menu.add_cascade(label="ملف", menu=file_menu)

# عنصر لعرض النتائج
label = tk.Label(window, text="اختر أمرًا من القائمة", font=("Arial", 12))
label.pack(pady=50)

window.mainloop()

💡 خصائص مهمة:

الخاصية الوصف
add_command() لإضافة خيار عادي
add_separator() لإضافة خط فاصل
add_cascade() لإضافة قائمة رئيسية تحتوي على أوامر فرعية
tearoff=0 لإلغاء الخط المتقطع في أول القائمة

✅ ملخص سريع:

العنصر الاستخدام
Menu لإنشاء شريط قوائم علوي
add_command لإضافة خيارات داخل القائمة
add_cascade لربط قائمة فرعية بالقائمة الرئيسية
command=... لتنفيذ دالة عند الضغط على الخيار


✅ التمرين: "مفكرة تحتوي على قائمة ملف"

🎯 المطلوب:

  1. أنشئ نافذة تحتوي على مربع نص متعدد الأسطر (Text).
  2. أضف قائمة علويّة بعنوان "ملف" تحتوي على الخيارات التالية:
    • "جديد" → يمسح محتوى مربع النص.
    • "خروج" → يغلق التطبيق.
  3. عند اختيار "جديد"، يُعاد تعيين مربع النص إلى فارغ.

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

import tkinter as tk

def جديد():
    مربع_النص.delete("1.0", tk.END)
    label.config(text="🆕 تم إنشاء مستند جديد")

def خروج():
    window.quit()

# النافذة
window = tk.Tk()
window.title("مفكرة بسيطة")
window.geometry("400x300")

# القائمة
menu = tk.Menu(window)
window.config(menu=menu)

# قائمة "ملف"
file_menu = tk.Menu(menu, tearoff=0)
file_menu.add_command(label="جديد", command=جديد)
file_menu.add_separator()
file_menu.add_command(label="خروج", command=خروج)
menu.add_cascade(label="ملف", menu=file_menu)

# مربع النص
مربع_النص = tk.Text(window, height=10, width=50)
مربع_النص.pack(pady=10)

# تسمية لعرض رسائل
label = tk.Label(window, text="📝 ابدأ الكتابة هنا...", font=("Arial", 10))
label.pack()

window.mainloop()

💡 ماذا تعلمت من التمرين؟

المفهوم الاستخدام
Menu إنشاء شريط قوائم علوي في البرنامج
add_command() إضافة عناصر قابلة للنقر داخل القائمة
delete("1.0", tk.END) حذف النص داخل مربع Text بالكامل
quit() لإنهاء التطبيق

إرسال تعليق

0 تعليقات