我使用 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())
最佳答案
单击“确定”按钮或 [x] 窗口关闭按钮后,将调用 close() 处理程序方法。你可以把你想要在窗口关闭时完成的事情放在那里,但你不能让它从那里自动关闭。
要从处理程序方法中关闭窗口,请调用 UIInfo.ui.dispose()。
因此,在示例代码中,您应该使用“self.c.ui.dispose()”而不是“self.close(self.c)”,并且 close() 方法应该是不必要的。
无论如何,这还不足以使该代码正常工作,因为调用 init 时信息尚未初始化 - 我必须更多地研究这个问题。
关于python - 如何在程序中添加转换屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292414/