wxpython:从Mainloop返回值

0 投票
2 回答
950 浏览
提问于 2025-04-16 10:44

如果我在一个脚本中创建了一个 wx.app,并调用了 MainLoop 方法。
那么如何将一个值从 wx.app 返回到这个脚本呢?

 print myApp.MainLoop()

2 个回答

1

其实,在这个框架内部,你可以通过 wx.GetApp() 来引用应用程序,这样就不需要在 MainWindow 的 init 方法里传递它了。

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()来获取这个值。

撰写回答