使用wxpython事件的绑定与处理

通过使用wx.EvtHandler类中的Bind方法可以将绑定事件的类型、事件的对象和事件的处理函数关联起来。下面为此方法的函数定义:
Bind(event, handler, source = None, id = wx.ID_ANY, id2 = wx.ID_ ANY)
一般是使用前三个参数,其中第一个参数为事件的类型,第二个参数为绑定此事件的处理函数。第三个参数默认为None,表示当前的Frame。当然,也可以将此事件绑定在特定的wxpython的窗口部件中。
下面演示事件的绑定和处理过程:


import wx
class MyPrame(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 World!")
        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.button = wx.Button(panel,-1,u"退出",size = (100,30))
        sizer.Add(self.button,0,wx.TOP|wx.LEFT,90)
        self.Bind(wx.EVT_BUTTON,self.OnClick,self.button)#绑定事件
        self.button.Bind(wx.EVT_ENTER_WINDOW,self.OnEnterWindow)#绑定鼠标进入事件
        self.button.Bind(wx.EVT_LEAVE_WINDOW,self.OnLeaveWindow)#离开
        #self.Centre()
    def OnClick(self,event):#鼠标单击处理函数
        self.Close(True)
    def OnEnterWindow(self,event):#鼠标进入时的指针处理
        self.button.SetLabel(u"退出(鼠标进入)")
        event.Skip()
    def OnLeaveWindow(self,event):#鼠标离开时的指针处理
        self.button.SetLabel(u"退出(鼠标离开)")
        event.Skip()
class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyPrame(None)
        self.frame.Show(True)
        return True
if __name__=='__main__':
    app = MyApp()
    app.MainLoop()

这是为命令按钮绑定多个事件的代码,包括鼠标指针的进入与离开。使用到event的Skip函数的原因是,因为在一般情况下窗口部件对象在处理一个事件完毕后,该事件处理就完结了。如果想要继续处理的话,就可以使用Skip方法来改变默认行为。
附图(鼠标指针进入与离开)
使用wxpython事件的绑定与处理_第1张图片
使用wxpython事件的绑定与处理_第2张图片

你可能感兴趣的:(成长)