في هذا الدرس سنتعلم كيفية فتح نافذة جديدة منبثقة عند الضغط على زر، باستخدام Toplevel من مكتبة tkinter، و لكن بشكل تفصيلي أكثر.
🎯 الفكرة العامة:
نريد أن يضغط المستخدم على زر معين، فتفتح نافذة جديدة (مثل نافذة إعدادات أو نافذة مساعدة)، ويمكنك إضافة عناصر أخرى إليها لاحقًا.
✅ الكود التطبيقي:
import tkinter as tk
from tkinter import Toplevel
# إنشاء النافذة الرئيسية
root = tk.Tk()
root.title("Main Window")
root.geometry("300x200")
# دالة لفتح نافذة جديدة
def open_new_window():
new_window = Toplevel(root)
new_window.title("New Window")
new_window.geometry("250x150")
# إضافة محتوى إلى النافذة الجديدة
label = tk.Label(new_window, text="هذه نافذة جديدة!")
label.pack(pady=20)
close_btn = tk.Button(new_window, text="إغلاق", command=new_window.destroy)
close_btn.pack()
# زر لفتح نافذة جديدة
open_btn = tk.Button(root, text="افتح نافذة جديدة", command=open_new_window)
open_btn.pack(pady=50)
# تشغيل التطبيق
root.mainloop()
📝 شرح الكود:
| السطر | الشرح |
|---|---|
Toplevel(root) |
ينشئ نافذة جديدة منبثقة تتبع النافذة الرئيسية |
new_window.title(...) |
عنوان النافذة الجديدة |
new_window.geometry(...) |
حجم النافذة الجديدة |
new_window.destroy |
يغلق النافذة الجديدة عند الضغط على زر الإغلاق |
📌 ملاحظات:
- يمكن فتح أكثر من نافذة في نفس الوقت.
- يمكن تخصيص النوافذ الجديدة بعناصر إدخال، أزرار، أو حتى صور.
📚 تمرين تطبيقي بسيط:
قم بإنشاء واجهة فيها زر مكتوب عليه "عرض معلومات"، عند الضغط عليه يتم فتح نافذة منبثقة تحتوي على:
- عنوان: "معلومات المستخدم"
- اسم المستخدم (مثلاً: "الاسم: تامر")
- البريد الإلكتروني (مثلاً: "البريد: tamer@example.com")
- زر لإغلاق النافذة المنبثقة.
✅ الحل الكامل:
import tkinter as tk
from tkinter import Toplevel
# النافذة الرئيسية
root = tk.Tk()
root.title("الواجهة الرئيسية")
root.geometry("300x200")
# دالة فتح النافذة المنبثقة
def show_info():
popup = Toplevel(root)
popup.title("معلومات المستخدم")
popup.geometry("300x150")
# محتوى النافذة
name_label = tk.Label(popup, text="الاسم: تامر", font=("Arial", 12))
name_label.pack(pady=5)
email_label = tk.Label(popup, text="البريد: tamer@example.com", font=("Arial", 12))
email_label.pack(pady=5)
close_btn = tk.Button(popup, text="إغلاق", command=popup.destroy)
close_btn.pack(pady=10)
# زر عرض المعلومات
info_btn = tk.Button(root, text="عرض معلومات", command=show_info)
info_btn.pack(pady=60)
# تشغيل التطبيق
root.mainloop()
✅ ماذا ستتعلم من هذا التمرين؟
- استخدام
Toplevelلإنشاء نافذة مستقلة. - إضافة عناصر متعددة داخل النافذة المنبثقة.
- التعامل مع الأزرار والأحداث.

