Как обрабатывать проект glade со многими окнами

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

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

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

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

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

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

4 ответов


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

следующие две основные причины:

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

вы взяли некоторые тайминги, чтобы узнать, имеет ли это значение?

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

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

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


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


У меня есть один файл поляны с 2 окнами. Это около 450kb в размере, и я не видел никаких замедлений с использованием libglademm с GTKmm.