2016-09-01 1 views
0

Ich habe eine angemessene Menge von Komponenten an ein Fenster angeschlossen. Ich möchte einige Eigenschaften dieser Komponenten ändern, wenn eine Schaltfläche gedrückt wird. Aber dies in einer Komponente zu einer Zeit ist ein langweiliger Job und wird viele Zeilen Code beinhalten. Es ist möglich, eine Komponente dazu zu bringen, das andere Komponentensignal zu hören, um eine Aufgabe auszuführen, wenn das Signal freigegeben wird? Das ist so etwas wie das Beobachtermuster. Wenn das nicht möglich ist. Was wäre der beste Weg, um eine Massenänderung dieser Komponenten vorzunehmen?Ändern der Komponenten Eigenschaften in großem Maßstab

Beispiel:

enter image description here

Code UI

Und wenn ich will alle anderen Komponenten in den Ausgangszustand zurückgesetzt werden, wenn die "Reset" -Taste ausgelöst wird? einen Handler auf die Schaltfläche Signal anlegen und die Komponenten ändern (Einträge, Switches, CheckBose, ...) einer nach dem anderen sehr anstrengend ist

+1

Warum nicht einfach über alle Widgets iterieren und sie zurücksetzen? 'für Eintrag in [Eintrag1, Eintrag2, Eintrag3, ...]: Eintrag.Satztext ('')' 'für Checkbutton in [Scheckbutton1, ...]: Scheckbutton.Satz_aktiv (Falsch)' usw. Oder wenn das auch noch so ist viel Aufwand, warum nicht das gesamte Ding aus Ihrer XML-Datei neu laden? –

+0

Dies ist eine Alternative. Ich könnte auch die 'GtkBuilder.get_objects()' Methode verwenden und 'listen Verständnis 'machen und nur die Komponenten bekommen, die ich will. Aber ich bin neugierig auf Ihren letzten Vorschlag. Wie könnte dies innerhalb der XML getan werden? –

+0

Ich wollte nichts im XML tun. Ich meine, Sie könnten die Widgets zerstören() und einen anderen 'Gtk.Builder' verwenden, um sie neu zu erstellen. –

Antwort

0

Diese Antwort nicht sein kann, Sie wollten, aber ...

Sie optimieren wahrscheinlich an der falschen Stelle. Das Fenster in Ihrem Beispiel benötigt etwa 6 Zeilen sehr einfachen Code zum Zurücksetzen. Dies ist unbedeutend im Vergleich zu den Vorteilen der Lösung:

  • der Code ist sehr einfach später
  • es ist auch leicht zu ändern später (wenn zB eine Standardwertänderung)

zu verstehen Das sind viel wichtigere Dinge als die zwei Minuten, die Sie für das Schreiben des Codes ursprünglich ausgeben - und das wird sich wahrscheinlich auch dann nicht ändern, wenn Sie das Formular komplexer machen (obwohl ich das grundlegende Design in Frage stellen würde, wenn Sie einen Bildschirm voller GtkEntries).

Verwandte Themen