【问题标题】:Main window doesnt closes after caling new script from it从中调用新脚本后主窗口不关闭
【发布时间】:2013-06-17 09:48:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python wxpython subprocess


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-14
        • 1970-01-01
        相关资源
        最近更新 更多