Как добавить экран перехода в программу? - PullRequest
1 голос
/ 03 сентября 2011

Я использовал traits 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())

1 Ответ

1 голос
/ 15 июня 2012

Метод обработчика close () вызывается ПОСЛЕ кнопки OK или нажатия кнопки закрытия окна [x].Вы можете поместить туда вещи, которые вы хотите сделать в момент закрытия окна, но вы не можете заставить его закрыться оттуда.

Чтобы закрыть окно из метода Handler, вызовите UIInfo.ui.dispose ().

Итак, в вашем примере кода вы должны использовать «self.c.ui.dispose ()», а не «self.close (self.c)», и метод close () должен быть ненужным.

Этого недостаточно для того, чтобы заставить этот код работать, так как информация еще не инициализируется при вызове init - мне нужно больше разобраться в проблеме.

...