2015-05-08 31 views
1

我有一個關於更改traitsui GUI的屬性的問題。 對於Gui我想更改gui的屬性,而不是因爲GUI內的更改。更改traitsui外的屬性GUI

from traits.api import HasTraits, Bool, Int 
from traitsui.api import View, Handler 

class TC_Handler(Handler): 
    None 

class TestClass(HasTraits): 
    b1 = Int 
    b2 = Bool 
    b3 = Bool 

    def _b1_default(self): 
     return 10 


view1 = View('b1', 'b2', 'b3', 
     title="Alter Title", 
     handler=TC_Handler(), 
     buttons = ['OK', 'Cancel']) 

tc = TestClass() 
tc.configure_traits(view=view1) 
tc.b1 = 454 

你看我試圖改變b1的值。

tc.b1 = 454 

更改該值,但關閉窗口後。我在gui運行時需要改變。

可以請別人幫忙嗎?

感謝

塞巴斯蒂安

回答

1

可以使用GUI.invoke_later爲你描述。

model_object = get_new_model_object() 

from pyface.api import GUI 
_gui = GUI() 
_gui.invoke_later(lambda : callable(model_object, *args)) 

model_object.configure_traits() 

但要小心,這不是GUI所要做的。你沒有暗示你爲什麼要這樣做。知道你爲什麼要這樣做會很有幫助,因爲很可能有更好的方法來做任何你想做的事情。