Python GUI Programming

إتقان إدارة تخطيط Tkinter: pack، grid، و place

Spread the love

يُسهّل Tkinter، مكتبة واجهة المستخدم الرسومية المدمجة في بايثون، إنشاء واجهات المستخدم الرسومية. ومع ذلك، فإن ترتيب الأدوات بكفاءة أمر بالغ الأهمية لتجربة المستخدم. يستكشف هذا البرنامج التعليمي مديري تخطيط Tkinter، ويهديك لبناء واجهات منظمة جيدًا وجذابة بصريًا.

جدول المحتويات:

  1. مدير الهندسة pack
  2. مدير الهندسة grid
  3. مدير الهندسة place
  4. اختيار مدير التخطيط المناسب

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، RIGHTfill (X، Y، BOTHexpand (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 أفضل توازن بين المرونة وسهولة الاستخدام.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *