Pregunta

Estoy trabajando en una aplicación PyGTK / glade que actualmente tiene 16 ventanas / cuadros de diálogo y tiene aproximadamente 130 KB, y eventualmente tendrá alrededor de 25 ventanas / cuadros de diálogo y alrededor de 200 KB. Actualmente, estoy almacenando todas las ventanas en un archivo glade monolítico. Cuando ejecuto una ventana, la llamo como ...

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

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

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

¿Cuál creen ustedes que es la mejor manera de hacer esto? ¿Un método requiere más recursos que otro? Algo que sería bueno de ir a los archivos de 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 lugar. Hace las cosas más simples. La desventaja es que puede ser un poco menos conveniente realizar cambios en diferentes ventanas.

Estoy abierto a todos y cada uno de los argumentos. Gracias!

¿Fue útil?

Solución

En mis proyectos, siempre tengo una ventana por archivo glade. Recomiendo 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. Claro que puede pasar el argumento raíz para evitar crear el árbol de widgets para todas las ventanas, pero aún así tendría que analizar todo el XML, incluso si no está interesado en él.
  • Conceptualmente es más fácil de entender si tiene un nivel superior por ventana. Puede saber fácilmente en qué nombre de archivo se encuentra un cuadro de diálogo / ventana con solo mirar el nombre de archivo.

Otros consejos

¿Tomaste algunos horarios para descubrir si hay alguna 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 necesita volver a leer el archivo si desea tener otra instancia de ese widget.

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

Uso diferentes archivos glade para diferentes ventanas. Pero mantengo el diálogo asociado con una ventana en el mismo archivo glade. Como dijiste, el problema de los nombres es molesto.

Tengo un archivo glade con 2 ventanas. Tiene un tamaño de aproximadamente 450 kb y no he visto ralentizaciones con libglademm con GTKmm.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top