[wxPython-users] source info for buttons
Simon Clay
simon.clay at imperial.ac.uk
Wed Jul 5 08:21:04 PDT 2006
On Wed, Jul 05, 2006 at 03:28:16PM +0100, Gabriel Murray wrote:
>
> In the wxPython book there is an example of a simple button frame (in
> the example button.py), where you click on the button and the button
> label changes to 'clicked'. If you have two buttons and you want the
> same result, i.e . the label to change on whichever button you click,
> how can you do this without defining two separate OnClick methods for
> the two buttons?
> For example:
> self.button = wx.Button(panel, -1, "Hello", pos=(50,20))
> self.Bind(wx.EVT_BUTTON, self.OnClick, self.button)
> self.button.SetDefault()
> self.button2 = wx.Button(panel, -1, "Hello", pos=(150,20))
> self.Bind(wx.EVT_BUTTON, self.OnClick, self.button2)
> self.button2.SetDefault()
> def OnClick(self,event):
> self.button.SetLabel("Clicked")
> ######
The wx.Event object holds data about the control that posted the event.
The GetEventObject method returns the object, so all you need to do is
change your OnClick method to:
def OnClick(self,event):
event.GetEventObject().SetLabel("Clicked")
As an aside, you appear to be using absolute positioning to lay out your
controls. I'd suggest that, unless you have a good reason to use it, you
take a look at sizers before you try to lay out anything non-trivial.
Simon.
More information about the wxpython-users
mailing list