سؤال

لقد كنت أتعلم لغة بايثون منذ فترة وحققت بعض النجاح.حتى أنني تمكنت من إنشاء برنامج أو برنامجين (بسيطين) باستخدام PyGtk + Glade.

الشيء هو:لست متأكدًا مما إذا كانت أفضل طريقة لاستخدام GTK مع python هي بناء الواجهات باستخدام Glade.

كنت أتساءل عما إذا كان الأشخاص الأكثر خبرة بيننا (تذكر، أنا مجرد مبتدئ) يمكنهم الإشارة إلى فوائد ومحاذير استخدام Glade بدلاً من إنشاء كل شيء في الكود نفسه (بافتراض أن تعلم روابط gtk الصحيحة لن يكون كذلك) تكون مشكلة بالضبط).

هل كانت مفيدة؟

المحلول

أود أن أقول أن ذلك يعتمد على:إذا وجدت أنه باستخدام Glade يمكنك إنشاء التطبيقات التي تريدها أو تحتاج إلى إنشائها، فلا بأس بذلك تمامًا.ومع ذلك، إذا كنت تريد حقًا معرفة كيفية عمل GTK أو كان لديك بعض متطلبات واجهة المستخدم غير القياسية، فسوف تفعل ذلك يملك للبحث في الأجزاء الداخلية لـ GTK (وهي ليست بهذا التعقيد).

شخصيًا، أقضي عادةً حوالي 5 دقائق في التعامل مع عميل ثري عندما أحتاج إلى بعض الميزات أو التخصيصات التي تكون ببساطة مستحيلة من خلال مصمم مثل Glade أو ستاتيك.ربما هذا أنا فقط.ومع ذلك، لا يزال من المفيد بالنسبة لي أن أبدأ في تصميم النوافذ باستخدام أداة رسومية.

توصيتي:إذا كان تكوين عملاء أثرياء باستخدام GTK سيكون جزءًا مهمًا من وظيفتك/هوايتك، فتعلم GTK أيضًا لأنك سوف بحاجة لكتابة هذا الرمز يوما ما.

ملاحظة.أنا شخصيا أجد ستاتيك أن يكون متفوقًا على Glade في أعمال التصميم، إذا كان غير مستقر قليلاً.

نصائح أخرى

استخدم GtkBuilder بدلاً من Glade، فهو مدمج في Gtk نفسه بدلاً من مكتبة منفصلة.

الميزة الرئيسية لـ Glade هي أنه من الأسهل بكثير إنشاء الواجهة.إن توصيل معالجات الإشارة يتطلب المزيد من العمل، لكنني لم أشعر أبدًا أن هذا الأمر مهم كثيرًا.

يعد Glade مفيدًا جدًا لإنشاء الواجهات، مما يعني أنه يمكنك بسهولة تغيير واجهة المستخدم الرسومية دون إجراء الكثير من التعليمات البرمجية.ستجد أنه إذا كنت تريد أن تفعل أي شيء مفيد (على سبيل المثال.إنشاء عرض شجرة) سيتعين عليك التعرف على أجزاء مختلفة من وثائق GTK - في الممارسة العملية، يمكنك العثور على برنامج تعليمي/أمثلة جيدة.

لقد بدأت باستخدام الفسحة، ولكن سرعان ما انتقلت إلى القيام بكل شيء في التعليمات البرمجية.يعد Glade رائعًا للأشياء البسيطة، وهو جيد عندما تتعلم كيفية تنظيم GTK لعناصر واجهة المستخدم (كيفية تعبئة الأشياء، وما إلى ذلك).ومع ذلك، عند إنشاء كل شيء باستخدام التعليمات البرمجية، ستتمتع بمرونة أكبر.بالإضافة إلى ذلك، ليس لديك تبعية الفسحة.

عادةً ما أبدأ بـ Glade حتى أصل إلى نقطة لا تحتوي فيها على الميزات التي أحتاجها، على سبيل المثال.خلق المعالج.طالما أنني أستخدم الأدوات القياسية التي توفرها Glade، فليس هناك حقًا أي سبب لتشفير واجهة المستخدم الرسومية يدويًا.

كلما شعرت براحة أكبر تجاه كيفية قيام Glade بتنسيق الكود، أصبحت عملية الترميز اليدوي أفضل.ناهيك عن أنه من السهل حقًا استخدام Glade لإنشاء إطار العمل الأساسي، لذلك لا داعي للقلق بشأن جميع عمليات التهيئة.

إذا كنت تكتب تطبيقًا تقليديًا لواجهة المستخدم الرسومية (GUI) والذي يعيد استخدام الكثير من المكونات القياسية من GTK+ (الأزرار والملصقات والحاويات وما إلى ذلك) فأنا شخصيًا سأختار Glade + Kiwi (إطار عمل مناسب لبناء تطبيقات GTK+ GUI).

الميزة الوحيدة الأكبر لاستخدام Glade هي أنه يقلل بشكل كبير من كود التخطيط/التعبئة.فيما يلي مثال بسيط للغاية يوضح بالفعل المشكلات المتعلقة بتصميم واجهة المستخدم الرسومية يدويًا (دون استخدام أي وظائف مساعدة):

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

لمزيد من الأمثلة خذ أ انظر هنا.حتى إذا كنت تكتب عنصر واجهة مستخدم مخصصًا معقدًا، فيمكنك دائمًا إنشاء عنصر نائب في Glade واستبداله بعد إنشاء مثيل.

لا ينبغي أن يستغرق الأمر وقتًا طويلاً حتى يقوم فريق Glade بإصدار نسخة جديدة من المصمم (3.6.0).سيضيف هذا الإصدار الجديد دعمًا لـ GtkBuilder، الذي يحل محل libglade (المكتبة الفعلية التي تحول ملفات Glade XML إلى شجرة عناصر واجهة مستخدم).يضيف مصمم Glade الجديد أيضًا مرة أخرى دعمًا لتعريف الكتالوجات (مجموعات الأدوات) في Python، بحيث يمكنك بسهولة إضافة عناصر واجهة المستخدم المخصصة الخاصة بك.

أوصي باستخدام Glade للتطوير السريع، لكن ليس للتعلم.لماذا؟لأنه في بعض الأحيان ستحتاج إلى ضبط بعض عناصر واجهة المستخدم لكي تعمل كما تريدها، وإذا كنت لا تعرف/تفهم حقًا سمات خصائص كل عنصر واجهة مستخدم، فستكون في مشكلة.

للشاشات السريعة والبسيطة أستخدم Glade.ولكن بالنسبة لأي شيء يحتاج إلى مستويات أفضل من التحكم، أقوم بإنشاء فئات مخصصة لما أحتاجه بالفعل (وهذا مهم، لأنه من السهل جدًا الانجراف في التعميمات).

من خلال فئات محددة من التطبيقات النحيفة، يمكنني بسرعة تغيير شكل ومظهر التطبيق على نطاق واسع من مكان واحد.بالأحرى مثل استخدام CSS للحفاظ على الاتساق لمواقع الويب.

أنا شخصياً أوصي بتشفيرها بدلاً من استخدام Glade.ما زلت أتعلم python وpyGtk ولكني سأقول إن كتابة واجهة المستخدم يدويًا أعطتني الكثير من المعرفة حول كيفية عمل الأشياء تحت الغطاء.

بمجرد أن تتعلم ذلك، أود أن أجرب تجربة Glade أو مصممي واجهة المستخدم الآخرين ولكن بالتأكيد تعلم كيفية القيام بذلك بالطريقة "الصعبة" أولاً.

أولاً، ابدأ بوضع هذا في منظوره الصحيح.

سوف تستخدم GTK.إنها مكتبة C ضخمة تم إنشاؤها عام 1993 باستخدام أفضل تقاليد أسلوب البرمجة في السبعينيات.لقد تم تصميمه للمساعدة في تطبيق GIMP، وهو منافس Photoshop الذي يريد أن يكون مع أخطاء فادحة في واجهة المستخدم.قد يحتوي حقل واجهة المستخدم الرسومية النموذجي على أربعين معلمة أو أكثر، معظمها متكررة، وتحتوي على حروف ومحددات.سيكون هناك ألم.

يدير GTK نفسه نظام كتابة ديناميكي كامل في لغة C باستخدام GObject.وهذا يجعل تصحيح الأخطاء متعة خاصة تتطلب التنقل يدويًا عبر صفائف المؤشرات إلى الأساليب المليئة بقوائم الوسائط العامة ذات الميراث الضمني.سوف تتنقل أيضًا بين مكتبات Pango عندما لا تتوقع ذلك، على سبيل المثال، استخدام ثابت Pango لمعرفة المكان الذي تنتقل إليه علامات الحذف في التسمية عندما تكون الصفحة صغيرة.توقع المزيد من الألم.

الآن، من المحتمل أنك تتعهد بتغليف جميع تفاعلات GTK الخاصة بك في بنية Model-View-Controller الخاصة بتطبيقك.هذا جيد.

سيساعد استخدام Glade أو gtkBuilder أو Stetic في حل مشكلة الاقتران الضخمة المكونة من أربعين معلمة لوظيفة ما.يوفر Glade أداة إنشاء واجهة المستخدم الرسومية الأساسية لسحب المكونات وإسقاطها معًا.يتم فصل المعلمات والمعلمات الموروثة إلى حد ما.مخرجات Glade هي ملف .glade XML الذي ستقرأه بعد ذلك، وترفق عمليات الاسترجاعات الخاصة بك ("معالجات الإشارة") بوظائف ذات أسماء مماثلة، وتقوم بالاستعلام عن الإصدار الموجود في الذاكرة من ملف XML هذا أو تحديثه للحصول على عناصر واجهة مستخدم تستخدمها بعد ذلك pyGTK للتلاعب.Glade نفسها عبارة عن سلالم ذات صرير وممرات ضيقة وغرف لا تتم صيانتها جيدًا.

يمنحك استخدام pyGTK تحكمًا دقيقًا بشكل مزعج من أجل إنشاء واجهة المستخدم الرسومية الخاصة بك.سيكون هذا رمزًا مطولًا ونسخًا ولصقًا.ستكون كل سمة عبارة عن استدعاء دالة منفصل.لا يُرجع مُحدد السمات أي شيء، لذا فإن تسلسل المكالمات غير وارد.عادة، لن يقدم لك IDE سوى الحد الأدنى من المساعدة حول ما تعنيه الوظائف وسوف تشير باستمرار إلى DevHelp أو بعض الأدوات الأخرى.

يتوقع المرء تقريبًا أن تفشل واجهات المستخدم الرسومية لـ GTK.

يمكنك استخدام الفسحة-2 للتصميم والاستخدام Glade2py.py لإنشاء رمز Pygtk النقي ، يستخدم Pygtkcompat لدعم GTK3

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top