Ich habe einen Drop-Down-Widget:In IPython Widgets, wie Sie das DropDown Widget mit neuen Werten aktualisieren?
self.foo_widget = widgets.Dropdown(description='Lorem ipsum', width=100)
self.foo_widget.options = ['Default', 'A', 'B', 'C', 'D']
Und ich fange die on_trait_change
Veranstaltung:
self.foo_widget.on_trait_change(self.handler, 'value')
nun in der Handler-Funktion handler
, ich mag den DropDown Wert wieder auf 'Default'
gesetzt. Der folgende Code ändert jedoch nur den Wert, ohne die Widgetanzeige zu aktualisieren. Der DropDown zeigt immer noch den ursprünglichen Auswahlwert (z. B. "C"), obwohl print self.foo_widget.value
als "Standard" angezeigt wird.
self.foo_widget.value = 'Default'
Ist das ein Fehler von IPython Widget? Was ist der richtige Weg, um das Update der Ansicht zu verursachen?
In der Tat, für die Liste Widgets scheint es, ich muss die Optionen löschen und Optionen erneut zuweisen, um die Widgets Anzeige zu aktualisieren. Hat jemand ähnliche Erfahrung?
Update: die Antwort von nluigi unter großen Werke. Wie im folgenden Beispiel gezeigt.
class test(object):
def __init__(self):
self.foo_widget = widgets.Dropdown(description='Lorem ipsum', width=100)
self.foo_widget.options = ['Default', 'A', 'B', 'C', 'D']
self.foo_widget.on_trait_change(self.handler, 'value')
display(self.foo_widget)
def handler(self, name, old, new):
print(self.foo_widget.value)
print(self.foo_widget.selected_label)
self.foo_widget.value = 'Default'
self.foo_widget.selected_label = 'Default'
Dank nluigi. Das funktioniert großartig! –