0

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

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

我想做什么会有什么问题,请解释什么是正确的方法。

寻求建议谢谢。对不起我的英语不好 。

4

2 回答 2

0

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

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

您还可以在实例化子框架或调用 GetTopWindow() 或 GetParent() 之类的方法时传递对主框架的引用,但我真的推荐 Pubsub。

于 2013-06-17T13:35:24.133 回答
0

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

self.Destroy()
subprocess.Popen('python newframe.py', shell=True)
于 2013-06-17T13:07:12.400 回答