Как справиться с проектом glade с большим количеством окон

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

  •  22-07-2019
  •  | 
  •  

Вопрос

Я работаю над приложением PyGTK / glade, которое в настоящее время имеет 16 окон / диалоговых окон и имеет размер около 130 КБ, и в конечном итоге будет иметь около 25 окон / диалоговых окон и около 200 КБ.В настоящее время я сохраняю все окна в одном монолитном файле glade.Когда я запускаю окно, я называю его like ...

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

Интересно, не было бы лучшей идеей разделить каждое окно на его собственный файл glade.Вместо одного файла glade с 25 окнами / диалогами у меня было бы 25 файлов glade с одним окном / диалогом в каждом, и я бы назвал это так:

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

Ребята, как вы думаете, какой способ сделать это лучше всего?Является ли один метод более ресурсоемким, чем другой?Одна вещь, которая была бы приятна при переходе к отдельным файлам glade, - это то, что было бы проще называть виджеты.Например, я называю все свои кнопки OK "windowxyz_ok", но я мог бы изменить их просто на "ok".Это все упрощает.Недостатком является то, что вносить изменения в разные окна может быть немного менее удобно.

Я открыт для любых аргументов.Спасибо!

Это было полезно?

Решение

В моих проектах у меня всегда есть по одному окну на файл glade.Я бы порекомендовал то же самое для вашего проекта.

Ниже приведены две основные причины:

  • Это будет быстрее и использовать меньше памяти, поскольку каждый вызов gtk.glade.XML() анализирует все целиком.Конечно, вы можете передать аргумент root, чтобы избежать создания дерева виджетов для всех окон, но вам все равно придется анализировать весь XML-файл, даже если он вас не интересует.
  • Концептуально это легче понять, если иметь по одному верхнему уровню на окно.Вы легко узнаете, в каком имени файла находится данный диалог / окно, просто взглянув на имя файла.

Другие советы

Потратили ли вы время, чтобы выяснить, имеет ли это значение?

Проблема в том, что, насколько я понимаю, Glade всегда создает все виджеты при синтаксическом анализе XML-файла, поэтому, если вы открываете XML-файл и читаете только один виджет, вы тратите много ресурсов.

Другая проблема заключается в том, что вам нужно перечитать файл, если вы хотите иметь другой экземпляр этого виджета.

То, как я делал это раньше, заключалось в том, чтобы поместить все виджеты, которые были созданы только один раз (например, окно about, главное окно и т. д.), в один файл glade и отдельные файлы glade для виджетов, которые нужно было создавать несколько раз.

Я использую разные файлы glade для разных окон. Но я сохраняю диалог, связанный с окном в том же файле glade. Как вы сказали, проблема с именами раздражает.

У меня есть один файл glade с 2 окнами. Он размером около 450 КБ, и я не видел никаких замедлений при использовании libglademm с GTKmm.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top