Frage

Ich arbeite an einer PyGTK / Glade-Anwendung, die 16 Fenster / Dialoge zur Zeit und ist über 130KB, und haben schließlich rund 25 Fenster / Dialoge und sein um 200KB. Derzeit bin ich Speichern Sie alle Fenster in einer monolithischen Lichtung Datei. Wenn ich ein Fenster laufen nenne ich es wie ...

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

Ich frage mich, ob es eine bessere Idee wäre, jedes Fenster in seine eigene Lichtung Datei zu teilen. Statt einer Lichtung Datei mit 25 Fenstern / Dialogen würde ich 25 Glade-Dateien mit einem Fenster haben / jeden Dialog und rufen Sie es wie folgt:

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

Was denken Sie Kerle ist der beste Weg, dies zu tun? Ist eine Methode, mehr Ressourcen als andere? Eine Sache, die über das Gehen auf einzelne Dateien Lichtung wäre schön ist, dass Widgets Benennung einfacher wäre. Zum Beispiel nenne ich alle meine OK-Tasten „windowxyz_ok“, aber ich konnte es ändern, um einfach „ok“ statt. Macht die Sache einfacher. Der Nachteil ist, dass es ein bisschen weniger komfortabel sein können Änderungen an verschiedenen Fenstern zu machen.

Ich bin offen für alle und alle Argumente. Dank!

War es hilfreich?

Lösung

In meinen Projekten habe ich immer ein Fenster pro Glade-Datei. Ich würde das gleiche für Ihr Projekt empfehlen.

Im Folgenden sind die zwei Hauptgründe:

  • Es wird schneller sein und weniger Speicher verwenden, da jeder Anruf gtk.glade.XML () analysiert die ganze Sache. Sicher, dass Sie in der Wurzel Argument übergeben können die Erstellung der Widget-Baum für alle Fenster zu vermeiden, aber Sie würden immer noch zu Parse alle XML, auch wenn Sie daran interessiert sind.
  • Konzeptionell ist es einfacher zu verstehen, wenn pro Fenster ein Toplevel haben. Sie wissen einfach Dateinamen, die ein gegebener Dialog / Fenster in nur sind bei den Dateinamen durch suchen.

Andere Tipps

Haben Sie nehmen einige Timings, um herauszufinden, ob es einen Unterschied macht?

Das Problem ist, dass, soweit ich es verstehe, Glade immer alle Widgets erstellt, wenn es eine XML-Datei analysiert, so dass, wenn Sie die XML-Datei öffnen und nur ein einziges Widget lesen, können Sie eine Menge von Ressourcen verschwenden.

Das andere Problem ist, dass Sie die Datei neu lesen müssen, wenn Sie eine andere Instanz dieses Widget haben wollen.

So wie ich es vorher war, alle Widgets zu setzen, die nur einmal erstellt wurden (wie die etwa Fenster, das Hauptfenster usw.) in eine Lichtung Datei und separate Glade-Dateien für Widgets, die benötigten mehrmals erstellt werden.

Ich verwende verschiedene Glade-Dateien für verschiedene Fenster. Aber ich halte Dialog im Zusammenhang mit einem Fenster in der gleichen Lichtung Datei. Wie Sie sagten, ist die Namensgebung Problem ärgerlich.

Ich habe eine Lichtung Datei mit 2 Fenstern. Es geht um 450kb groß und ich habe keine Verlangsamungen mit libglademm mit GTKmm gesehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top