Изменение атрибута за пределами графического интерфейса traitsui

У меня есть вопрос об изменении атрибутов графического интерфейса traitsui. Для графического интерфейса я хочу изменить атрибут графического интерфейса, а не из-за изменения в графическом интерфейсе.

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

изменить значение, но после закрытия окна. И мне нужно изменение во время работы графического интерфейса.

Может, пожалуйста, кто-нибудь помочь?

Спасибо

Себастьян


person Python3141    schedule 08.05.2015    source источник


Ответы (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()

Но имейте в виду, что это не то, для чего созданы графические интерфейсы. Вы не дали намека на то, почему вы хотите это сделать. Было бы полезно знать, почему вы хотите это сделать, потому что вполне возможно, что есть лучший способ делать то, что вы хотите.

person aestrivex    schedule 28.05.2015