في هذا الدرس سنتعلّم كيف يمكننا فتح نافذة جديدة مستقلة (نافذة منبثقة) داخل نفس التطبيق باستخدام Toplevel.
🧠 ما هي Toplevel؟
- هي أداة في Tkinter تُمكنك من إنشاء نافذة جديدة مستقلة عن النافذة الرئيسية.
- يمكن استخدامها لعرض إعدادات، أو نافذة تأكيد، أو أي معلومات أخرى في نافذة فرعية.
✅ مثال عملي:
import tkinter as tk
# إنشاء النافذة الرئيسية
root = tk.Tk()
root.title("النافذة الرئيسية")
root.geometry("300x200")
# دالة لإنشاء نافذة منبثقة
def open_popup():
popup = tk.Toplevel(root) # إنشاء نافذة جديدة
popup.title("نافذة منبثقة")
popup.geometry("250x150")
tk.Label(popup, text="مرحبًا بك في النافذة الجديدة!").pack(pady=20)
tk.Button(popup, text="إغلاق", command=popup.destroy).pack()
# زر لفتح النافذة الجديدة
tk.Button(root, text="فتح نافذة جديدة", command=open_popup).pack(pady=50)
root.mainloop()
📌 ملاحظات مهمة:
- يمكن فتح أكثر من نافذة منبثقة.
- يمكنك تخصيص كل نافذة
Toplevelكما تشاء: الحجم، اللون، العنوان، محتواها. - لا تنسَ استخدام
popup.destroyلإغلاقها عند الحاجة.
🧩 استخدامات عملية:
- نوافذ إعدادات Settings
- نافذة تأكيد قبل حذف ملف
- عرض نتائج معينة أو رسائل تحذير/نجاح
🎯 التمرين: نافذة منبثقة لعرض معلومات عن المطوّر
المطلوب: أنشئ تطبيقًا فيه زر مكتوب عليه "معلومات عن المطور"، وعند الضغط عليه تفتح نافذة منبثقة تحتوي على اسم المطوّر، البريد الإلكتروني، وزر "إغلاق".
✅ الحل الكامل:
import tkinter as tk
# إنشاء النافذة الرئيسية
root = tk.Tk()
root.title("تطبيقي الصغير")
root.geometry("300x200")
# دالة فتح النافذة المنبثقة
def show_info():
popup = tk.Toplevel(root)
popup.title("عن المطوّر")
popup.geometry("250x150")
# محتوى النافذة
tk.Label(popup, text="الاسم: تامر أحمد", font=("Arial", 12)).pack(pady=5)
tk.Label(popup, text="البريد: tamer@example.com", font=("Arial", 10)).pack(pady=5)
# زر إغلاق
tk.Button(popup, text="إغلاق", command=popup.destroy).pack(pady=10)
# زر في النافذة الرئيسية
tk.Button(root, text="معلومات عن المطوّر", command=show_info).pack(pady=60)
root.mainloop()
💡 أفكار للتطوير لاحقًا:
- اجعل النافذة تحتوي على صورة رمزية صغيرة.
- أضف روابط تواصل (مثل واتساب أو لينكدإن).
- استخدم
messageboxكبديل سريع أحيانًا.

