🎯 الهدف: تعلم كيفية إنشاء قوائم منسدلة (Menu bar) في تطبيق Tkinter، مثل "ملف" و"تحرير" وغيرها، التي نراها في معظم البرامج.
🧱 ما هو 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=... |
لتنفيذ دالة عند الضغط على الخيار |
✅ التمرين: "مفكرة تحتوي على قائمة ملف"
🎯 المطلوب:
- أنشئ نافذة تحتوي على مربع نص متعدد الأسطر (Text).
- أضف قائمة علويّة بعنوان "ملف" تحتوي على الخيارات التالية:
- "جديد" → يمسح محتوى مربع النص.
- "خروج" → يغلق التطبيق.
- عند اختيار "جديد"، يُعاد تعيين مربع النص إلى فارغ.
🧾 الحل الكامل:
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 تعليقات