在traitsui GUI之外更改属性

时间:2015-05-08 15:08:43

标签: python user-interface traits traitsui

我有一个关于更改traitsui GUI属性的问题。 对于Gui我想要更改gui的属性,而不是因为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 个答案:

答案 0 :(得分: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的目的。你没有暗示你为什么要这样做。知道你为什么要这样做会很有帮助,因为很有可能有更好的方法来做你想做的事。