wxpython:从Mainloop返回值

时间:2011-01-27 19:19:13

标签: python wxpython

如果我在脚本中创建一个wx.app并调用方法MainLoop 如何从wx.app返回一个值到脚本?

 print myApp.MainLoop()

2 个答案:

答案 0 :(得分:1)

实际上,在框架内你可以使用wx.GetApp()引用应用程序,因此无需通过MainWindow的 init 传递它

答案 1 :(得分:0)

如果有办法从wx.Frame中直接访问wx.App对象,我不知道它是什么,所以我可能会这么做:

class MainWindow(wx.Frame):
    def __init__(self, parent, id, title, app):
        wx.Frame.__init__(self, parent, id, title)
        self.app = app
        #...

class CustomApp(wx.App):
    def __init__(self):
        wx.App.__init__(self)
        self.value = None

    def SetValue(self, value):
        self.value = value

    def GetValue(self):
        return self.value


app = CustomApp()
frm = MainWindow(None, wx.ID_ANY, "Main Window", app)
frm.Show()
app.MainLoop()

print(app.GetValue())

通过对应用程序的引用,您可以从框架内的任何位置调用self.app.SetValue(),然后在主循环完成后调用app.GetValue()来检索该值。