#!/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
最新推荐文章于 2022-08-11 14:39:24 发布