كيفية التعامل مع مشروع الفسحة مع العديد من النوافذ

StackOverflow https://stackoverflow.com/questions/336013

  •  22-07-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق PyGTK/glade الذي يحتوي حاليًا على 16 نافذة/مربع حوار ويبلغ حجمه حوالي 130 كيلو بايت، وسيحتوي في النهاية على حوالي 25 نافذة/مربع حوار ويبلغ حجمه حوالي 200 كيلو بايت.حاليًا، أقوم بتخزين كافة النوافذ في ملف واحد مترابط.عندما أقوم بتشغيل نافذة أسميها مثل...

self.wTree = gtk.glade.XML("interface.glade", "WindowXYZ")

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

self.wTree = gtk.glade.XML("windowxyz.glade")

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

أنا منفتح على أي وجميع الحجج.شكرًا!

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

المحلول

في مشاريعي، لدي دائمًا نافذة واحدة لكل ملف زجاجي.أوصي بنفس الشيء لمشروعك.

فيما يلي السببان الرئيسيان:

  • سيكون أسرع وسيستخدم ذاكرة أقل، حيث أن كل استدعاء لـ gtk.glade.XML() يوزع كل شيء.بالتأكيد يمكنك تمرير وسيطة الجذر لتجنب إنشاء شجرة عناصر واجهة المستخدم لجميع النوافذ، ولكن لا يزال يتعين عليك القيام بذلك تحليل جميع ملفات XML، حتى لو لم تكن مهتمًا بها.
  • من الناحية النظرية، من الأسهل أن نفهم إذا كان لديك مستوى أعلى واحد لكل نافذة.يمكنك بسهولة معرفة اسم الملف الموجود في مربع حوار/نافذة معينة بمجرد النظر إلى اسم الملف.

نصائح أخرى

هل يستغرق بعض المواعيد لمعرفة ما إذا كان يحدث فرقا؟

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

والمشكلة الأخرى هي التي تحتاج إلى إعادة قراءة الملف إذا كنت تريد أن يكون مثيل آخر من أن القطعة.

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

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

ولدي ملف الفسحه واحدة مع 2 النوافذ. ولكن عن 450kb في حجم وأنا لم أر أي تباطؤ باستخدام libglademm مع GTKmm.

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