2008-12-03 11 views
7

que estoy trabajando en una aplicación PyGTK/claro que en la actualidad cuenta con 16 ventanas/cuadros de diálogo y se trata de 130KB, y en algún momento tendrá alrededor de 25 ventanas/cuadros de diálogo y de alrededor de 200 KB. Actualmente, estoy almacenando todas las ventanas en un archivo glade monolítico. Cuando ejecuto una ventana como la llamo ...Cómo manejar un proyecto claro con muchas ventanas

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

Me pregunto si sería una mejor idea de dividir cada ventana en su propio archivo claro. En lugar de un archivo claro con 25 ventanas/cuadros de diálogo que tendría 25 archivos Claro con una ventana/de diálogo cada uno y lo llamo así:

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

Qué piensan ustedes es la mejor manera de hacer esto? ¿Un método es más intensivo en recursos que otro? Una cosa que sería bueno acerca de ir a archivos glade individuales es que nombrar widgets sería más fácil. Por ejemplo, nombro todos mis botones OK "windowxyz_ok", pero podría cambiarlo a simplemente "ok" en su lugar. Simplifica las cosas El inconveniente es que puede ser un poco menos conveniente realizar cambios en diferentes ventanas.

Estoy abierto a todos los argumentos. ¡Gracias!

Respuesta

9

En mis proyectos, que siempre tienen una ventana por archivo claro. Yo recomendaría lo mismo para su proyecto.

Las siguientes son las dos razones principales:

  • Será más rápido y usar menos memoria, ya que cada llamada a gtk.glade.XML() analiza todo el asunto. Claro que puede pasar el argumento raíz para evitar crear el árbol de widgets para todas las ventanas, pero igual tendrá que analizar todo el XML, incluso si no está interesado en él.
  • Conceptualmente es más fácil de entender si tiene un nivel por ventana. Usted sabe fácilmente en qué nombre de archivo se encuentra un cuadro de diálogo/ventana con solo mirar el nombre del archivo.
2

¿Tomó algunos tiempos para averiguar si se hace una diferencia?

El problema es que, por lo que yo entiendo, Glade siempre crea todos los widgets cuando analiza un archivo XML, por lo que si abre el archivo XML y solo lee un solo widget, está desperdiciando muchos recursos.

El otro problema es que se necesita para volver a leer el archivo si usted quiere tener otra instancia de ese widget.

La forma en que lo hice antes fue poner todos los widgets que se crearon una sola vez (como la ventana de acercamiento, la ventana principal, etc.) en un archivo glade, y separar archivos glade para widgets que debían crearse varias veces.

0

Uso diferentes archivos de glade para diferentes ventanas. Pero sigo el cuadro de diálogo asociado con una ventana en el mismo archivo glade. Como dijiste, el problema de denominación es molesto.

0

que tienen un archivo claro con 2 ventanas. Tiene aproximadamente 450kb de tamaño y no he visto ninguna ralentización usando libglademm con GTKmm.

Cuestiones relacionadas