Python Gtk Signale kurzzeitig Blockieren

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Benutzeravatar
martinjo
User
Beiträge: 182
Registriert: Dienstag 14. Juni 2011, 20:03

Montag 26. März 2018, 12:58

Hallo

Ich habe ein Programm mit einer Oberfläche mit verschiedenen Schaltern und Feldern.

Nun sollen bestimmte Dinge neu berechnet werden sobald ich einen Knopf drücke, aber auch wenn sich ein Feld ändert. Jetzt möchte ich aber erst die Felder mit werten füllen ohne das etwas passiert, und später dann den aktivieren Knopf drücken und dann werden alle Felder geprüft. Ändere ich später nachträglich noch ein Feld soll dieses jedoch wieder die "in_changed" Funktion aufrufen.

Vereinfacht gesagt, ich suche eine Möglichkeit ein Gtk.Entry zu füllen und die Signale des Widgets zu blockieren.
Benutzeravatar
martinjo
User
Beiträge: 182
Registriert: Dienstag 14. Juni 2011, 20:03

Montag 26. März 2018, 13:35

Funktioniert hat nun:

Code: Alles auswählen

# storage
self._signal_handlers = []

# connect
handler_id = self.entry.connect("changed", self.on_entry_changed)
self._signal_handlers.append([handler_id, self.entry])

# change entry without signal
for handler, widget in self._signal_handlers:
    widget.handler_block(handler)  
self.entry.set_text("test")  
for handler, widget in self._signal_handlers:
    widget.handler_unblock(handler)
Antworten