我正在使用wxpython学习python和GUI模型,因为我不熟悉每次编程都会遇到困难。 我的问题是我有一个带有两个按钮的GUI(主窗口),当用户点击button1打开子窗口(单独的python脚本)时,我想在打开子窗口之前关闭或销毁主窗口。
self.Destroy()
subprocess.call("python newframe.py",shell=True)
#It will not close main window
我想做的是什么错误,请解释什么是正确的方法。
寻求建议谢谢。 抱歉我的英文。
答案 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。