wxpython是如何退出Mainloop的?

时间:2013-12-18 13:36:09

标签: python wxpython

我有一个wxpython应用程序,它以这种方式运行:

if __name__ == "__main__":
    app = wx.App(False)
    frame = MainWindow("Application")
    frame.Show()
    app.MainLoop()

应用程序菜单栏上有一个“退出”菜单项,它绑定:

def onExit(self, event):
    """"""
    self.Close()
  • 点击“退出”时,究竟会发生什么?
  • 单击“退出”时,app.MainLoop()会发生什么?
  • 点击框架窗口右上角的“X”按钮 点击“退出”按钮?
  • 当我单击“X”按钮时,为什么python.exe * 32进程没有结束,并且 当我点击“X”按钮时如何杀死python.exe * 32进程结束?
  • 如果我运行脚本,单击“退出”时为什么不打印"ok" 这样:

    if __name__ == "__main__":
        app = wx.App(False)
        frame = MainWindow("Application")
        frame.Show()
        app.MainLoop()
        print "ok"
    

1 个答案:

答案 0 :(得分:2)

  1. 当"退出"单击,究竟发生了什么?

    '出口'有一个事件绑定来调用onExit方法,该方法调用此MainWindow实例的close方法。这会调用EVT_CLOSE事件,你可以选择绑定到它并控制发生的事情,如果你不绑定,它会调用Destroy方法来安全地销毁窗口。

  2. 当"退出"单击,app.MainLoop()会发生什么?

    主循环将继续处理事件,除非它的最后一个顶级窗口关闭,当这发生时,mainlop结束。

  3. 点击" X"框架窗口右上角的按钮与点击&#34相同;退出"按钮?

    它与生成EVT_CLOSE事件的方式相同,该事件与onExit绑定如上所述。

  4. 当我点击" X"" X"按钮,当我点击" X"时,如何杀死python.exe * 32进程结束?按钮?

    当所有顶级窗口关闭时,它应该结束,你必须仍然有一个顶级窗口。

  5. 为什么不打印" ok"当我点击"退出"如果我以这种方式运行脚本

    通常情况下,当没有顶级窗口时,它就会出现。