لا توفر مكتبة Tkinter في بايثون آلية مباشرة “لتبديل الإطارات” مثل أطر عمل الويب. بدلاً من ذلك، تقوم بإدارة ظهور العديد من الإطارات داخل نافذة رئيسية واحدة لخلق وهم التبديل بين شاشات أو أقسام مختلفة. يعرض هذا البرنامج التعليمي كيفية إنشاء واجهة مستخدم ديناميكية ومنظمة باستخدام هذه التقنية.
جدول المحتويات
إنشاء إطارات وحاوية
الفكرة الأساسية هي إنشاء العديد من الإطارات، كل منها يمثل “صفحة” أو قسمًا مختلفًا في تطبيقك. يتم وضع كل هذه الإطارات داخل إطار حاوية واحد، والذي يعمل كمنطقة عرض رئيسية. لا يكون سوى إطار واحد مرئيًا في أي وقت معين.
import tkinter as tk
root = tk.Tk()
root.title("مثال تبديل الإطارات")
# إطار الحاوية
container = tk.Frame(root)
container.pack(side="top", fill="both", expand=True)
# إنشاء الإطارات
frame1 = tk.Frame(container)
frame2 = tk.Frame(container)
# وضع الإطارات (إخفاء frame2 في البداية)
frame1.pack(fill="both", expand=True)
frame2.pack(fill="both", expand=True)
frame2.pack_forget()
# إضافة عناصر واجهة المستخدم إلى الإطارات
label1 = tk.Label(frame1, text="هذا هو الإطار 1")
label1.pack(pady=20)
label2 = tk.Label(frame2, text="هذا هو الإطار 2")
label2.pack(pady=20)
تبديل الإطارات باستخدام دالة
تدير دالة ظهور الإطارات. تقوم بإخفاء الإطار المرئي حاليًا ثم عرض الإطار المحدد.
def show_frame(frame):
for f in (frame1, frame2): # قم بتوسيع هذه القائمة لمزيد من الإطارات
if f == frame:
f.pack(fill="both", expand=True)
else:
f.pack_forget()
مثال: تطبيق تنقل بسيط
فيما يلي مثال كامل مع زرين تنقل:
import tkinter as tk
root = tk.Tk()
root.title("مثال تبديل الإطارات")
container = tk.Frame(root)
container.pack(side="top", fill="both", expand=True)
frame1 = tk.Frame(container)
frame2 = tk.Frame(container)
frame1.pack(fill="both", expand=True)
frame2.pack(fill="both", expand=True)
frame2.pack_forget()
label1 = tk.Label(frame1, text="هذا هو الإطار 1")
label1.pack(pady=20)
label2 = tk.Label(frame2, text="هذا هو الإطار 2")
label2.pack(pady=20)
def show_frame(frame):
for f in (frame1, frame2):
if f == frame:
f.pack(fill="both", expand=True)
else:
f.pack_forget()
button1 = tk.Button(root, text="انتقل إلى الإطار 1", command=lambda: show_frame(frame1))
button1.pack()
button2 = tk.Button(root, text="انتقل إلى الإطار 2", command=lambda: show_frame(frame2))
button2.pack()
root.mainloop()
تحسين واجهة المستخدم
هذا إطار عمل أساسي. ضع في اعتبارك هذه التحسينات:
- مزيد من الإطارات: أضف المزيد من الإطارات وقم بتحديث دالة
show_frame
وفقًا لذلك. - مدراء التصميم: استكشف
grid
أوplace
لتصميمات أكثر تعقيدًا. - التصميم: استخدم السمات والألوان وعناصر واجهة المستخدم المخصصة لتعزيز المظهر البصري.
- ربط البيانات: استخدم المتغيرات لتحديث محتوى الإطار ديناميكيًا.
- معالجة الأخطاء: قم بتنفيذ معالجة أخطاء قوية لتطبيق أكثر استقرارًا.
توفر هذه الطريقة طريقة نظيفة لإدارة عروض متعددة في تطبيق Tkinter الخاص بك، مما يحاكي بشكل فعال تبديل الإطارات.