لا تقل واجهة المستخدم الرسومية GUI أهميةً عن أي مكون آخر في التطبيق فهي النافذة التي يتفاعل عبرها المستخدم مع التطبيق بسهولة ويسر، وتعد لغة بايثون من أشهر اللغات المستخدمة في بناء تطبيقات بواجهة رسومية حديثة جذابة التصميم بخطوات بسيطة وغير معقدة إذ يجري ذلك بالاعتماد على أطر عمل Frameworks مفتوحة المصدر وهذا ما المقال مخصص لمناقشة تلك الأطر المتاحة لهذه العملية.
نُشر استبيان يتضمن السؤال التالي:
اقتباس"هل يمتلك آخر برنامج بايثون طورته واجهة مستخدم رسومية؟"
وصل عدد الإجابات إلى 42447 إجابة وتظهر التفاصيل كما يلي:
ولكن قبل اعتماد تصميم واجهة رسومية لتطبيق، ألم تتساءل إن كان التطبيق بحاجة ماسّة لها أم يمكن الاعتماد فقط على واجهة سطر الأوامر؟ عمومًا الواجهة الرسومية ضرورية في الحالات التي يحتاج فيها مستخدم التطبيق إلى التفاعل مع التطبيق عبر الفأرة أي تلك التطبيقات التي ينزلها المستخدم على حاسوبه المحلي ويستخدمها في حياته اليومية، أما التطبيقات التي تكون فيها السرعة وقابلية الاستخدام والتحكم فهنا يمكن الاستغناء عن الواجهة الرسومية واعتماد واجهة سطر الأوامر.
يمكن إضافة مظهر جمالي بسيط لواجهة سطر الأوامر من خلال العديد من المكتبات مثل Click و Cement و Cliff التي تسهل البدء بهذه التصاميم.
وقد تكون واجهة الويب حتى بالنسبة لبرنامج يفترض تشغيله محليًا خيارًا يستحق النظر خاصة إذا رغب المستخدم باستضافة البرنامج عن بُعد، وتوضح المشاريع التالية هذا الأمر: جانغو Django أو فلاسك Flask أو بايراميد Pyramid.
يمكن استخدام مكتبة مثل pywebview لتحويل واجهة ويب إلى واجهة رسومية تشبه الواجهات الأصيلة، ويمكن بدلًا من ذلك استخدام أطر العمل مثل Pyforms لبناء تجربة متسقة عبر الويب وسطر الأوامر وسطح المكتب وكل ذلك باستخدام شيفرة أساسية واحدة.
تصميم الواجهة الرسومية في بايثون
توفر بايثون للمبرمجين عدة خيارات لبناء واجهات رسومية وبرمجتها كلها تمر عبر ما يُعرف باسم الارتباطات Bindings أو مكتبات رابطة وهي عبارة عن واجهة برمجية API تتيح تضمين مكتبة خاصة بتصميم الواجهات الرسومية من منصات ومكتبات عديدة وربطها مع تطبيقك لبناء واجهة رسومية بتلك المنصات والمكتبات بالإضافة إلى الارتباطات الخاصة بأنظمة التشغيل المختلفة مثل لينكس Linux وويندوز Windows وماك Mac ويعمل العديد منها عبر الأنظمة الثلاثة أي بناء واجهة رسومية واجهة لأنظمة التشغيل تلك.
مكتبات PyQt و PySide و Qt لبايثون
PyQt هو عبارة عن ارتباط Binding أو مكتبة ربط في بايثون يقوم بتضمين مكتبة Qt الشهيرة لتصميم الواجهات الرسومية التي تمتلك الكثير من الأدوات بالإضافة لمجتمع داعم كبير، لذا إن سبق لك استعمال مكتبة Qt بلغة برمجة مغايرة لبايثون مثل تطوير تطبيقات كي دي KDE أو أي بيئة سطح مكتب أخرى قائمة على Qt، وهذا يعني أن Qt مألوفة بالنسبة لك مما يجعل PyQt خيارًا مناسبًا لك.
يمكن استخدام QtCreator عند إنشاء تطبيقات بايثون باستخدام Qt، وهو عبارة عن بيئة تطوير متكاملة IDE تتميز بتوفير وضع المصمم designer mode لإنشاء شيفرة من عملية تصميم الواجهة رسوميًا.
هنالك خيار آخر لاستخدام مكتبة Qt مع بايثون وهو Qt لبايثون المعروف باسم PySide2.
Tkinter
مكتبة Tkinter هي مجموعة أدوات لبناء واجهة المستخدم الرسومية مبنية على مكتبة Tcl/Tk، حيث Tcl هي لغة برمجة أما Tk هي مجموعة أدوات واجهة المستخدم الرسومية، كما تتميز بكونها أول إطار عمل قدَّم مفهوم الزوج اللغوي language pair في أوائل التسعينيات والذي هو عبارة عن مُعرّف يصف مزيجًا من لغتين كما في عملية الترجمة ويحدد المتغيرات المحددة لكل من لغة المصدر واللغة الهدف.
ننصح بمتابعة سلسلة بناء واجهة رسومية عبر مكتبة Tkinter التي تشرح أساسيات المكتبة.
WxPython
تعمل المكتبة WxPython الرابطة على تضمين مكتبة wxWidgets الخاصة بلغة ++C في بايثون، وهي مكتبة واجهة المستخدم الرسومية الخاصة بالأنظمة متعددة المنصات.
الواجهات المصممة عبر WxPython تكون متناسقة أكثر مع مختلف أنظمة التشغيل التي تعمل عليها، عكس إطار العمل Tkinter لأنه يستخدم عناصر واجهة مستخدم النظام المضيف لإنشاء واجهة مستخدم رسومية، ويمتلك WxPython مجتمع مطورين متنامٍ ومن السهل البدء باستخدامه، ولكن قد تحتاج إلى تضمين wxPython مع تطبيقاتك أو تطلب من المستخدم تثبيته بنفسه لأنه لا يُثبت تلقائيًا مع بايثون.
Python GTK+3
يُعرف مشروع Python GTK+ 3 سابقًا باسم PyGTK ويوفر ارتباطات لبايثون بكائنات GTK وهي مجموعة من عناصر النوافذ وعناصر واجهة المستخدم المستخدمة في بناء واجهة المستخدم.
يعتمد Python GTK+3 على +GTK وهو واسع الاستخدام حيث يعد كأساس لسطح مكتب جنوم GNOME، كما يُستخدم في التطبيقات المستقلة على لينكس وويندوز وماك، وبالتالي فإن استخدام Python GTK+3 يوفر نفس الإطار وأدوات التطوير لمشاريع بايثون الخاصة بك، ومن أبرزها Glade وهو مُصمِّم واجهات رسومية لتطبيقات +GTK.
يحفظ Glade الواجهات المصممة من خلاله بتنسيق XML ويمكنك استخدامها بواسطة كائن GtkBuilder في شيفرة تطبيقك، ويستخدم ميزة السحب والإفلات drag-and-drop مما يسهل إنشاء واجهة مستخدم ديناميكية وسريعة الاستجابة دون الحاجة إلى صياغة ما ترغب بتصميمه ضمن شيفرة التصميم.
Kivy
Kivy هو مجموعة أدوات لأنظمة لينكس Linux (بما في ذلك راسبيري باي Raspberry Pi) وويندوز Windows وماك Mac وأندرويد Android.
صُمِّمَ مع مراعاة التطور السريع والأجهزة الحديثة لذا يركز على واجهات المستخدم المبتكرة، واُستخدِمَ لتصميم تطبيقات الوسائط المتعددة مثل تطبيقات التحكم في الموسيقى للهواتف وتطبيقات السبورة البيضاء whiteboarding المستخدمة في غرف الاجتماعات.
لا يمتلك Kivy برنامج تصميم مرئي مثل QtCreator و Glade ولكنه يستخدم لغة التصميم الخاصة به التي تساعد المستخدم على ربط تصميم واجهة المستخدم بكائنات التعليمات البرمجية مما يسهل تقسيم الأصناف والتوابع ضمن شيفرة التطبيق.
يستضيف Kivy مستودع Kivy Garden الخاص بعناصر واجهة المستخدم والإضافات التي أنشأها المستخدم لذلك إذا كنت تفكر في إنشاء شيء لا يوفره Kivy فربما يكون موجودًا ضمن المستودع.
خاتمة
تطول القائمة لذكر أدوات تصميم الواجهات الرسومية في بايثون ولا يحتويها مقال واحد، لذا لمزيد من الخيارات يمكن التحقق من صفحة "برمجة واجهة المستخدم الرسومية في Python" من توثيق بايثون الرسمي والذي يسرد العشرات من الأدوات الأخرى.
تتوفر الكثير من الحلول لربط بايثون بالعديد من مكتبات عناصر واجهة المستخدم المختلفة وأدوات واجهة المستخدم الرسومية مثل FLTK و FOX وخيارات أخرى تستحق النظر مثل مثل pygame وpyglet وPanda3d وغيرها الكثير، ولكن من المحتمل أن يتجنب المبتدئين المشاريع التي تقدم تطبيقات جزئية فقط أو التي لم تعد تتم صيانتها إلا أن هناك الكثير من الأدوات الجيدة التي تناسب الكثير من حالات الاستخدام.
ترجمة -وبتصرف- للمقال 5 open source Python GUI frameworks لصاحبه Jason Baker.
أفضل التعليقات
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.