wxpython 3.6 创建自定义事件(点击计数) CustomEventFrame

#!/usr/bin/env python
#-*-coding:utf-8 -*-

import wx

class TwoButtonEvent(wx.PyCommandEvent):
    def __init__(self,evtType,id):
        wx.PyCommandEvent.__init__(self,evtType,id)
        self.clickCount=0
    def GetClickCount(self):
        return self.clickCount
    def SetClickCount(self,count):
        self.clickCount=count
        
myEVT_TWO_BUTTON=wx.NewEventType()
EVT_TWO_BUTTON=wx.PyEventBinder(myEVT_TWO_BUTTON,1)

class TwoButtonPanel(wx.Panel):
    def __init__(self,parent,id=1,leftText="Left",
                 rightText="Right"):
        wx.Panel.__init__(self,parent,id)
        self.leftButton=wx.Button(self,label=leftText)
        self.rightButton=wx.Button(self,label=rightText,
                                   pos=(100,0))
        self.leftClick=False
        self.rightClick=False
        self.clickCount=0
        
        self.leftButton.Bind(wx.EVT_LEFT_DOWN,self.OnLeftClick)
        self.rightButton.Bind(wx.EVT_LEFT_DOWN,self.OnRightClick)
        
    def OnLeftClick(self,event):
        self.leftClick=True
        self.OnClick()
        event.Skip()
        
    def OnRightClick(self,event):
        self.rightClick=True
        self.OnClick()
        event.Skip()
        
    def OnClick(self):
        self.clickCount+=1
        if self.leftClick and self.rightClick:
            self.leftClick=False
            self.rightClick=False
            evt=TwoButtonEvent(myEVT_TWO_BUTTON,self.GetId())
            evt.SetClickCount(self.clickCount)
            self.GetEventHandler().ProcessEvent(evt)
            
class CustomEventFrame(wx.Frame):
    def  __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,'Click Count:0',
                          size=(300,100))
        panel=TwoButtonPanel(self)
        self.Bind(EVT_TWO_BUTTON,self.OnTwoClick,panel)
        
    def OnTwoClick(self,event):
        self.SetTitle("Click Count:%s"%event.GetClickCount())
        
if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=CustomEventFrame(parent=None,id=-1)
    frame.Show()
    app.MainLoop()
    

你可能感兴趣的:(wxpython 3.6 创建自定义事件(点击计数) CustomEventFrame)