يُسهّل Tkinter، مكتبة واجهة المستخدم الرسومية المدمجة في بايثون، إنشاء واجهات المستخدم الرسومية. ومع ذلك، فإن ترتيب الأدوات بكفاءة أمر بالغ الأهمية لتجربة المستخدم. يستكشف هذا البرنامج التعليمي مديري تخطيط Tkinter، ويهديك لبناء واجهات منظمة جيدًا وجذابة بصريًا.
جدول المحتويات:
1. مدير الهندسة pack
pack
هو أبسط مدير تخطيط. إنه يرتب الأدوات بشكل تسلسلي، إما أفقيًا أو رأسيًا، وملء المساحة المتاحة. إنه مناسب للنماذج الأولية السريعة والتخطيطات البسيطة، ولكن إدارة الواجهات المعقدة باستخدام pack
يمكن أن يصبح أمرًا شاقًا.
import tkinter as tk
root = tk.Tk()
root.title("مثال Tkinter Pack")
label1 = tk.Label(root, text="التسمية 1")
label1.pack(side=tk.TOP, fill=tk.X) # مثال باستخدام خيارات side و fill
button1 = tk.Button(root, text="الزر 1")
button1.pack(pady=10) #إضافة تباعد
entry1 = tk.Entry(root, width=30)
entry1.pack()
root.mainloop()
يُوضح هذا المثال الاستخدام الأساسي. خيارات مثل side
(TOP
، BOTTOM
، LEFT
، RIGHT
)، fill
(X
، Y
، BOTH
)، expand
(True
/False
)، وخيارات التباعد توفر بعض التحكم، ولكن تحديد المواقع الدقيق يبقى أمرًا صعبًا.
2. مدير الهندسة grid
يوفر grid
نهجًا أكثر تنظيماً، ويرتب الأدوات في جدول ثنائي الأبعاد (صفوف وأعمدة). يسمح هذا بالتحكم الدقيق في الموضع والحجم، مما يجعله مناسبًا لمعظم التطبيقات.
import tkinter as tk
root = tk.Tk()
root.title("مثال Tkinter Grid")
label1 = tk.Label(root, text="الاسم:")
label1.grid(row=0, column=0, sticky=tk.W) #استخدام sticky للتنسيق
entry1 = tk.Entry(root)
entry1.grid(row=0, column=1, padx=5, pady=5) #إضافة تباعد
label2 = tk.Label(root, text="البريد الإلكتروني:")
label2.grid(row=1, column=0, sticky=tk.W)
entry2 = tk.Entry(root)
entry2.grid(row=1, column=1, padx=5, pady=5)
button1 = tk.Button(root, text="إرسال")
button1.grid(row=2, column=1, pady=10)
root.mainloop()
يُوضح هذا نموذجًا بسيطًا. خيارات rowspan
و columnspan
تسمح للأدوات بالامتداد عبر صفوف أو أعمدة متعددة. sticky
(N
، S
، E
، W
) يتحكم في التوسيع داخل خلية.
3. مدير الهندسة place
يوفر place
تحكمًا دقيقًا بالبكسل باستخدام الإحداثيات (x، y). إنه مثالي للعناصر الثابتة أو التراكبات ولكنه أقل مرونة من grid
لإعادة التغيير الديناميكي. يتطلب إعادة وضع الأدوات إعادة حساب الإحداثيات عند تغيير حجم النافذة.
import tkinter as tk
root = tk.Tk()
root.title("مثال Tkinter Place")
label1 = tk.Label(root, text="التسمية 1")
label1.place(x=50, y=50)
button1 = tk.Button(root, text="الزر 1")
button1.place(x=150, y=50)
root.mainloop()
هذا يضع الأدوات في إحداثيات محددة. على الرغم من دقته، إلا أن إدارة place
في التطبيقات التي تحتوي على نوافذ قابلة لإعادة التغيير أو محتوى ديناميكي يمكن أن يكون أمرًا صعبًا.
4. اختيار مدير التخطيط المناسب
يوفر Tkinter ثلاثة مديري تخطيط قوية: pack
، grid
، و place
. pack
بسيط ولكنه محدود. grid
متعدد الاستخدامات وموصى به لمعظم التطبيقات. place
يوفر تحكمًا دقيقًا بالبكسل ولكنه يفتقر إلى القدرة على التكيف. يعتمد الخيار الأفضل على تعقيد تطبيقك ومتطلباته. في معظم الحالات، يوفر grid
أفضل توازن بين المرونة وسهولة الاستخدام.