事件:是指用户对界面的各种操作,例如鼠标的单击和移动。
自定义事件:自己定义事件,满足个性化需求。
事件队列:不是每一个事件都需要马上响应的。
事件触发:使用事件类型。通过事件类型可以识别在同一个事件类下的不同事件类型。如同意属于wx.MouseEvent类,可以通过事件类型的值来区分用户是移动了鼠标还是单机了鼠标。
特定事件类:都有一个事件类型集合与其关联。Wx.MouseEvent有14个事件与其关联。不同窗口部件响应不同事件,而不会发生冲突。
案例:
通过wx.EvtHandler类中的Bind方法可以绑定事件的类型、事件对象和事件处理函数。
#encoding:utf-8
import wx
class MyFrame(wx.Frame):
def __init__(self,parent):
wx.Frame.__init__(self,parent,-1,'hello world',size=(300,300))
panel=wx.Panel(self)
sizer=wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(sizer)
txt=wx.StaticText(panel,-1,'hello nihao')
sizer.Add(txt,0,wx.TOP|wx.LEFT,100)
button=wx.Button(panel,-1,"Quit")
sizer.Add(button,0,wx.TOP|wx.LEFT,100)
self.Bind(wx.EVT_BUTTON,self.OnClick,button)#绑定事件,三个参数为:事件类型、绑定事件的处理函数、绑定对象
self.Centre()
def OnClick(self,event): #自定义事件处理函数,Onclick函数表示关闭
self.Close(True) #关闭窗口,实际上也退出了事件循环。
#创建应用程序对象
class MyApp(wx.App):
def OnInit(self):
self.frame=MyFrame(None)
self.frame.Show(True)
return True
def OnExit(self):
print "over event"
if __name__ == "__main__":
app=MyApp()
app.MainLoop()
运行结果:点击quit会关闭窗口