从中调用新脚本后,主窗口不会关闭

时间:2013-06-17 09:48:42

标签: python wxpython subprocess

我正在使用wxpython学习python和GUI模型,因为我不熟悉每次编程都会遇到困难。 我的问题是我有一个带有两个按钮的GUI(主窗口),当用户点击button1打开子窗口(单独的python脚本)时,我想在打开子窗口之前关闭或销毁主窗口。

      self.Destroy()
      subprocess.call("python newframe.py",shell=True)
      #It will not close main window

我想做的是什么错误,请解释什么是正确的方法。

寻求建议谢谢。 抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

subprocess.call()等待子进程退出。 - >在子程序退出之前,按钮回调将永远不会返回。这使主窗口关闭。使用不等待子进程的subprocess.Popen()

self.Destroy()
subprocess.Popen('python newframe.py', shell=True)

答案 1 :(得分:0)

您不应该关闭主框架,否则您将实际退出应用程序。相反,你应该隐藏主框架,只显示子框架。然后,当您关闭子框架时,您可以重新显示主框架。我个人认为使用Pubsub是实现这一目标的最简单方法。这是一个指向如何操作的教程的链接:

http://www.blog.pythonlibrary.org/2010/06/27/wxpython-and-pubsub-a-simple-tutorial/

当您实例化子帧或调用GetTopWindow()或GetParent()之类的东西时,您也可以传递对主框架的引用,但我真的推荐Pubsub。