是否可以从另一个wxApp运行wxApp? 我想简单地调用我从另一个wxApp的方法编写的程序(称为DataDeck),就像它是一个插件。wxPython:从另一个wxApp调用wxApp
类似:
def on_datadeck_btn_click(self, event):
import datadeck.main
datadeck.main.run()
event.Skip()
其中datadeck.main.run()是一个wxApp的经典开始:
def run():
app = DataDeck(0)
app.SetAppName("DataDeck")
app.MainLoop()
现在,它正确地打开DataDeck在第一时间和它的工作原理,但在关闭它之后它不会再次打开DataDeck。这会冻结一切。
更新:基于@Mike Driscoll答案,我记录自己越来越来到了以下解决方案:
我datadeck
def run_as_plugin():
#[do some stuff related to XRC layouts and sysout redirection]
MainGUI = datadeck.gui.maingui.MainGUI()
增加了一个“切入点”凡MainGUI的构造函数( )自动显示wxFrame。现在我的应用程序的行为就像是调用者wxApp的一个组件。 因此,我修改应用程序的方法如下:
def on_datadeck_btn_click(self, event):
import datadeck.main
datadeck.main.run_as_plugin()
event.Skip()
这是非常简单的,真的!我不得不修改我的对象来处理stdout重定向(不是这个问题的一部分,我忽略了细节),并且一切正常。
即使您没有直接建议我如何实施解决方案,您是对的,但您指出了正确的方向:避免调用datadeck方法负责创建wx.App。查看我的问题以获取更新。谢谢! – dgraziotin
@Mike Driscoll,Mike,如果不能完成,那么我的代码在做什么?对不起,我错过了这里的一些东西。 – joaquin
@joaquin - 我问罗宾邓恩评论你的答案,以解释为什么这不是一个好主意,因为我不知道如何自己回答你。我希望他的评论澄清这个问题。 –