Как справиться с проектом поляны со многими окнами - PullRequest
7 голосов
/ 03 декабря 2008

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

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

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 04 декабря 2008

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

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

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

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

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

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

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

0 голосов
/ 14 марта 2009

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

0 голосов
/ 03 декабря 2008

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

...