介绍
一个wxPython应用程序没有主程序;与之等效的是为从wx.App派生的类所定义的wx.AppConsole.OnInit成员函数。
OnInit函数通常至少会创建一个顶层窗口。与早期版本的wxPython不同,OnInit函数不会返回一个窗口。相反,它会返回一个布尔值,该值表示处理是否应该继续(True表示继续,False表示不继续)。
应用程序通过销毁所有窗口来关闭。由于应用程序要退出就必须销毁所有窗口,所以在创建新窗口时,尽可能使用父窗口是明智之举,这样一来,删除顶级窗口时就会自动删除子窗口。另一种方法是在顶级窗口的 wx.CloseEvent处理程序中显式删除子窗口。
在紧急情况下,可以调用wx.Exit函数来终止应用程序。不过,通常情况下,当最后一个顶级窗口关闭时,应用程序会自动关闭。请参阅“应用程序关闭”(就是本文下面的标题)相关内容。
下面是定义一个应用程序的示例:
class DerivedApp(wx.App):
def OnInit(self):
the_frame = wx.Frame(None, -1)
# Other initialization code...
the_frame.Show(True)
return True
应用程序关闭
应用程序通常会在其最后一个顶级窗口关闭时关闭。这通常是预期的行为,这意味着如果你的程序只有一个顶级窗口,那么在响应“退出”菜单命令时,调用wx.Window.Close就足够了。如果不希望出现这种行为,可以调用wx.PyApp.SetExitOnFrameDelete来更改它。
注意:请注意,这样的逻辑并不适用于程序进入主循环之前显示的窗口:换句话说,你可以放心地在wx.AppConsole.OnInit中显示一个对话框,并且不用担心当这个对话框(此时它是最后一个顶级窗口)关闭时应用程序就会终止。应用程序关闭的另一个方面是wx.AppConsole.OnExit,它会在应用程序退出时、且在 wxPython清理其内部结构之前被调用。