У меня есть черты ui для создания программы. Я пытаюсь закрыть окно программы, так что это может быть как экран перехода, но он не работает.
from enthought.traits.api import HasTraits, Str, Int ,Instance, Any
from enthought.traits.ui.api import View, Item,Group, Handler,Controller, UIInfo
from enthought.pyface.timer.api import Timer
class aa(HasTraits):
name = Str
age = Int
view1 = View('name','age',)
class closeHandler(Handler):
timer = Instance(Timer)
c = Any#
def init(self, info):
super(closeHandler, self).init(info)
self.c = info
self.timer = Timer(1000, self.exit_app())
def close(self,info,is_ok):
super(closeHandler, self).close(info, is_ok)
def exit_app(self):
print self.c
self.close(self.c)
a = aa()
a.configure_traits(handler=closeHandler())
Метод обработчика close() называется ПОСЛЕ ОК, или щелкнули кнопки закрытия окна [x]. Вы можете поместить туда вещи, которые хотите сделать, когда окна закрыты, но вы не можете закрыть его оттуда.
Чтобы закрыть окно из метода Handler, вызовите UIInfo.ui.dispose().
Итак, в вашем примере кода вы должны использовать "self.c.ui.dispose()", а не "self.close(self.c)", и метод close() не должен быть лишним.
Этого недостаточно для того, чтобы этот код работал, так или иначе, потому что информация еще не инициализирована при вызове init - мне придется больше вникать в проблему.
close
только для вызова самого метода, который вы переопределили?