2015-09-04 10 views
7

मैं एक ड्रॉपडाउन विजेट बनाया:आईपीथन विजेट में, ड्रॉपडाउन विजेट को नए मान के साथ कैसे अपडेट करें?

self.foo_widget = widgets.Dropdown(description='Lorem ipsum', width=100) 
self.foo_widget.options = ['Default', 'A', 'B', 'C', 'D'] 

और मैं on_trait_change घटना पर कब्जा: हैंडलर समारोह handler में अब

self.foo_widget.on_trait_change(self.handler, 'value') 

, मैं लटकती मूल्य 'Default' वापस करने के लिए सेट करना चाहते हैं। लेकिन निम्न कोड केवल विजेट डिस्प्ले को अपडेट किए बिना मान बदलता है। ड्रॉपडाउन अभी भी मूल चयन मान (उदा।, 'सी') दिखाता है भले ही print self.foo_widget.value 'डिफ़ॉल्ट' दिखाता है।

self.foo_widget.value = 'Default' 

क्या यह आईपीथन विजेट का एक बग है? दृश्य के अपडेट का सही तरीका क्या है?

वास्तव में, सूची विजेट्स के लिए, ऐसा लगता है कि मुझे विकल्पों को साफ़ करना होगा और विजेट्स के प्रदर्शन को अपडेट करने के लिए विकल्पों को फिर से असाइन करना होगा। किसी के पास समान अनुभव है?

अद्यतन: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' 

उत्तर

5
प्रति चयन वर्ग के specification

, आप भी 'Default' को selected_label विशेषता निर्धारित विजेट अद्यतन करने के लिए करना होगा:

self.dropDown.value = 'Default' 
self.dropDown.selected_label = 'Default' 
+0

धन्यवाद nluigi। यह बहुत अच्छा काम करता है! –

संबंधित मुद्दे