from wxPython.wx import *
ID_ABOUT = 101
ID_EXIT = 102
class MyFrame(wxFrame):
def __init__(self, parent, ID, title):
wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, wxSize(200, 150))
self.CreateStatusBar()
self.SetStatusText("This is the statusbar")
menu = wxMenu()
menu.Append(ID_ABOUT, "&About", "More information about this program")
menu.AppendSeparator()
menu.Append(ID_EXIT, "E&xit", "Terminate the program")
menuBar = wxMenuBar()
menuBar.Append(menu, "&File");
self.SetMenuBar(menuBar)
#############################
EVT_MENU(self, ID_ABOUT, self.OnAbout)
EVT_MENU(self, ID_EXIT, self.TimeToQuit)
def OnAbout(self, event):
dlg = wxMessageDialog(self, "This sample program shows off/n"
"frames, menus, statusbars, and this/n"
"message dialog.",
"About Me", wxOK | wxICON_INFORMATION)
dlg.ShowModal()
dlg.Destroy()
def TimeToQuit(self, event):
self.Close(true)
##############################
class MyApp(wxApp):
def OnInit(self):
frame = MyFrame(NULL, -1, "Hello from wxPython")
frame.Show(true)
self.SetTopWindow(frame)
return true
app = MyApp(0)
app.MainLoop()
如上,与上一版程序的唯一不同在于加如了对About和Exit菜单事件的处理,
事件是一种特殊的属性,是一种方法指针.他遵循"好莱坞法则","不要给我们打电话,我们会打给你的."
wxMessageDialog是通用对话框.可以用作About窗口,提示窗口等.
EVT_*告诉程序这是个事件帮助函数,
EVT_MENU告诉程序这个函数处理的是菜单按下的事件,
EVT_MENU(self,ID_ABOUT,self.OnAbout)告诉程序这里响应的是名字为ID_ABOUT的菜单项 按下事件.