Domanda

Sto lavorando ad un'applicazione PyGTK / glade che attualmente ha 16 finestre / finestre di dialogo e ha circa 130 KB e alla fine avrà circa 25 finestre / finestre di dialogo e sarà di circa 200 KB. Attualmente, sto memorizzando tutte le finestre in un file glade monolitico. Quando corro una finestra la chiamo come ...

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

Mi chiedo se sarebbe una buona idea dividere ogni finestra nel suo file glade. Invece di un file glade con 25 finestre / finestre di dialogo, avrei 25 file glade con una finestra / finestra di dialogo ciascuno e lo chiamerei così:

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

Quale pensate sia il modo migliore per farlo? Un metodo richiede più risorse di un altro? Una cosa che sarebbe piacevole andare su singoli file glade è che i nomi dei widget sarebbero più facili. Ad esempio, assegno tutti i miei pulsanti OK " windowxyz_ok " ;, ma potrei cambiarlo in semplicemente " ok " anziché. Semplifica le cose. Il rovescio della medaglia è che potrebbe essere un po 'meno conveniente apportare modifiche a finestre diverse.

Sono aperto a qualsiasi argomento. Grazie!

È stato utile?

Soluzione

Nei miei progetti, ho sempre una finestra per file glade. Consiglierei lo stesso per il tuo progetto.

I seguenti sono i due motivi principali:

  • Sarà più veloce e utilizzerà meno memoria, poiché ogni chiamata a gtk.glade.XML () analizza il tutto. Sicuro che puoi passare l'argomento root per evitare di creare l'albero dei widget per tutte le finestre, ma dovresti comunque analizzare tutto l'XML, anche se non ti interessa.
  • Concettualmente è più facile capire se ha un livello superiore per finestra. Sai facilmente in quale nome di file si trova una determinata finestra di dialogo / finestra semplicemente guardando il nome del file.

Altri suggerimenti

Hai impiegato dei tempi per scoprire se fa la differenza?

Il problema è che, per quanto ne so, Glade crea sempre tutti i widget quando analizza un file XML, quindi se apri il file XML e leggi solo un singolo widget, stai sprecando molte risorse.

L'altro problema è che è necessario rileggere il file se si desidera avere un'altra istanza di quel widget.

Il modo in cui l'ho fatto prima era di mettere tutti i widget che erano stati creati una sola volta (come la finestra informazioni, la finestra principale ecc.) in un file glade e separare i file glade per i widget che dovevano essere creati più volte.

Uso diversi file glade per finestre diverse. Ma mantengo il dialogo associato a una finestra nello stesso file glade. Come hai detto, il problema della denominazione è fastidioso.

Ho un file glade con 2 finestre. Ha una dimensione di circa 450kb e non ho riscontrato rallentamenti con libglademm con GTKmm.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top