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

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

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

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

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

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

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


person Adam Plumb    schedule 03.12.2008    source источник


Ответы (4)


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

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

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

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

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

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

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

person Torsten Marek    schedule 03.12.2008

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

person Manuel Ceron    schedule 03.12.2008

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

person Soo Wei Tan    schedule 13.03.2009