uk ru en pl cs sk bg de fr es it ro hu tr id ja zh

Python 1. ميزات تنفيذ GUI الديناميكية على Tix الحاجيات مكتبة: ScrolledWindow و NoteBook.

إلى الرئيسية حول الرمز

واحدة من مزايا لغة البرمجة الديناميكية Python هو القدرة على إنشاء حيوي واجهة المستخدم الرسومية (GUI) في وقت التشغيل. المدمج في مكتبة Tkinter يسمح لك لخلق ومكان ونقل مجموعة متنوعة من العناصر الرسومية للتحكم والمدخلات والمخرجات المعلومات - الحاجيات. ومع ذلك، مكتبة Tkinter لديها ميزة واحدة، إذا كان عدد من الحاجيات يصبح أكبر مما يسمح لعرض نافذة مع أقصى الأحجام المتوفرة لشاشة العرض، ثم هناك مشكلة في الوصول إلى المنطقة المخفية من النافذة.

تمديد مكتبة المضمنة Tkinter، مكتبة Tix (Tk Interface Extension) يمكن حل هذه المشكلة مع مساعدة من القطعة ScrolledWindow - نافذة مع أشرطة التمرير. القطعة المفيدة الثانية التي تأتي مع مكتبة Tix هي نافذة كلفه - NoteBook.

ومع ذلك، فإن استخدام هذه الحاجيات في تطبيقات نافذة في Python له خصوصياته الخاصة من عرض المعلومات في حالة أن الحاجيات الداخلية لا تتناسب مع حجم نافذة المخصصة. في هذه المقالة، سنلقي نظرة على هذه الميزات عند تنظيم واجهة تعامل ديناميكية GUI:
المثال الأول هو وضع القطعة ScrolledWindow في إطار التطبيق الرئيسي، وبالتالي جميع الحاجيات الأخرى سيتم وضعها تلقائيا في ذلك.
المثال الثاني هو وضع الحاجيات ScrolledWindow فقط في علامات التبويب القطعة NoteBook.

يتم تنفيذ الأمثلة المقدمة هنا في Python 2.7 و Linux نظام التشغيل: Ubuntu 16.04LTS. آمل أن تنفيذ هذه الأمثلة في الإصدار الخاص بك من Python ونظام التشغيل لن تقدم أي تعقيد بالنسبة لك.

مثال No.1 - القطعة ScrolledWindow كما الحاوية الرئيسية للتطبيق بأكمله.


#!/usr/bin/python

import Tix as tx

root=tx.Tk()
root.geometry("800x600+0+10")

swr=tx.ScrolledWindow(root)
swr.pack(fill=tx.BOTH, expand=1)

nb=tx.NoteBook(swr.window)
nb.pack(fill=tx.BOTH, expand=1)

for i in range(1,21):
	nb.add("tab"+str(i),label="Tab "+str(i))

for k in range(1,39):
	l=tx.Label(nb.tab1,text="label "+str(k))
	l.pack()

for k in range(1,29):
	l=tx.Label(nb.tab2,text="label "+str(k))
	l.pack(side=tx.LEFT)

root.mainloop()

ويمكن رؤية نتيجة السيناريو No.1 في الأرقام الثلاثة التالية:


شكل 1

العرض الأولي للتطبيق No.1 بعد الإطلاق. ومن الواضح حدوث التلقائي من أشرطة التمرير من اليمين وفي أسفل النافذة الرئيسية. منذ الحجم الكلي التي تشغلها القطعة NoteBook أكبر من نافذة الجذر الأصلي (800x600) بسبب عدد Tab المحدد في الدورة الأولى وعدد Label المحدد في الحلقتين المقبلتين. يوضح هذا الرقم أنه من بين 20 علامة تبويب محددة، تم وضع 15 فقط في النافذة الرئيسية، و 31 فقط من 39 علامة محددة في علامة التبويب الأولى موجودة.


شكل 2

تظهر علامة التبويب الثانية في الحالة الأولية 16 تسمية فقط من أصل 28. يبقى موقف أشرطة التمرير دون تغيير.


شكل 3

نقل شريط التمرير السفلي إلى اليمين يمكنك أن ترى أن الإطار الرئيسي يغطي ليس فقط جميع علامات التبويب القطعة NoteBook ولكن أيضا جميع العلامات وضعت في علامة التبويب الثانية.

مثال No.2 - يقع القطعة ScrolledWindow داخل كل علامة تبويب من القطعة NoteBook.


#!/usr/bin/python

import Tix as tx

root=tx.Tk()
root.geometry("800x600+0+10")

swm = []

nb=tx.NoteBook(root)
nb.pack(fill=tx.BOTH, expand=1)

for i in range(1,21):
	nb.add("tab"+str(i),label="Tab "+str(i))
	sw=tx.ScrolledWindow(eval("nb.tab"+str(i)))
	swm.append(sw)
	sw.pack(fill=tx.BOTH, expand=1)

for k in range(1,39):
	l=tx.Label(swm[0].window,text="label "+str(k))
	l.pack()

for k in range(1,29):
	l=tx.Label(swm[1].window,text="label "+str(k))
	l.pack(side=tx.LEFT)

root.mainloop()

ويمكن رؤية نتيجة السيناريو No.2 في الأشكال الثلاثة التالية:


شكل 4

العرض الأولي للتطبيق No.2 بعد الإطلاق. ظهر شريط التمرير فقط على اليمين في علامة التبويب Tab1، حيث أن عدد العلامات الرأسية أكبر من الأحجام الأصلية للنافذة الرئيسية.


شكل 5

تعرض علامة التبويب الثانية شريط التمرير السفلي فقط، حيث إن علامات التبويب هذه في وضع أفقي.


شكل 6

نقل شريط التمرير إلى اليمين، يمكنك أن ترى كل التسميات في نهاية النافذة، ولكن لا يمكنك الوصول إلى علامات التبويب مع أرقام أكبر من 15. وهكذا، في البديل No.2، أشرطة التمرير توفر الوصول فقط ضمن علامة التبويب. إذا كان عدد علامات التبويب أكبر من ما يتم وضعه في الحجم الأفقي للنافذة الرئيسية، فلن يكون هناك إمكانية الوصول إليها.

لذلك، إذا كان عدد علامات التبويب من القطعة NoteBook ليست كبيرة جدا لتجاوز حدود العرض من الإطار الرئيسي، ثم البديل يعتبر موقع القطعة ScrolledWindow مقبولة تماما.

وقد أدت محاولة توحيد كل من المتغيرات نفس النتيجة مثل المثال No.1، لأن نافذة القطعة من ScrolledWindow توسع إلى الحد الأقصى للأحزاب المحتلة من قبل الكائنات وضعت فيه.

آمل أن هذه الأمثلة سوف تساعدك في تصميم تطبيقات النافذة الخاصة بك في Python.

Oleksii Tolkachov (ORCID ID: 0000-0002-4835-0507), Kiev, 30.08.2017.

إلى الرئيسية حول الرمز