Pan*_*Yan 7 python user-interface ipython-notebook
我创建了一个DropDown小部件:
self.foo_widget = widgets.Dropdown(description='Lorem ipsum', width=100)
self.foo_widget.options = ['Default', 'A', 'B', 'C', 'D']
Run Code Online (Sandbox Code Playgroud)
我抓住了这个on_trait_change事件:
self.foo_widget.on_trait_change(self.handler, 'value')
Run Code Online (Sandbox Code Playgroud)
现在在处理函数中handler,我想将DropDown值设置回'Default'.但以下代码仅更改值而不更新窗口小部件显示.即使print self.foo_widget.value显示为"默认" ,DropDown仍会显示原始选择值(例如,"C").
self.foo_widget.value = 'Default'
Run Code Online (Sandbox Code Playgroud)
这是IPython Widget的错误吗?导致更新视图的正确方法是什么?
实际上,对于列表小部件,似乎我必须清除选项并再次分配选项以使小部件的显示更新.有没有类似的经历?
更新:以下 nluigi的答案很有效.如以下示例所示.
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'
Run Code Online (Sandbox Code Playgroud)
根据选择类的规范,您还必须将selected_label属性设置'Default'为使窗口小部件更新:
self.dropDown.value = 'Default'
self.dropDown.selected_label = 'Default'
Run Code Online (Sandbox Code Playgroud)