Welcome folks today in this blog post we will be counting mouse clicks
using mouse click event
inside wxpython gui
desktop app in python. All the full source code of the application is given below.
Get Started
In order to get started you need to install the below library using the pip
command as shown below
pip install wxpython
After installing this library you need to make an app.py
file and copy paste the following code
app.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
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() |
If you execute the above python script
by typing the below command
python app.py