On Sat, 26 Feb 2005 19:48:25 +0000 Adam Cripps <[EMAIL PROTECTED]> wrote:
> On Fri, 25 Feb 2005 12:21:18 +0100, Michael Lange > <snip> > > > > You see, in my example above I called the list "buttonlist" instead of > > "button"; maybe this naming > > helps avoid confusion . > > > > Best regards > > > > Michael > > Many thanks for the help here. > > I got all my buttons displayed and stored in the list with: > > for i in range (1, 11): > submittext = ">>> " > self.s = Button(text=submittext, command = > self.showButton) > self.s.grid(column=4, row=i+4) > submitlist.append(self.s) > Hi Adam, note that there's no use in making the button an attribute of its parent class with self.s = Button(text=submittext, command = self.showButton) because self.s gets overridden on every iteration in the for-loop; it's not a bug, but might be a source of confusion, when you try to access self.s later in your code; you don't need the reference anyway, because you keep the references to all buttons in the list. > > - however, when I click the button, I want self.showButton to know > which one of them was pressed. I've seen in other gui programming the > idea of an id or identifier - I can't see that here. Ideally, I would > like to know the value of i in self.showButtons - but when I use > self.showButtons(i) showButtons gets called straight at run time. > > Any ideas? You have two options here: 1. use a lambda expression as button command, lambda allows you to pass an argument to the callback: s = Button(text=submittext, command = lambda index=i: self.showButton(index)) 2. if you don't like lambdas, you can use the button's bind() method instead of the command option: s = Button(text=submittext) s.bind('<ButtonRelease-1>', self.showButton) s.bind('<KeyRelease-space>', self.showButton) bind() passes an event to the callback which allows you to find out which widget sent the event via the event's widget attribute: def showButton(self, event): button = event.widget print button['text'] I hope this helps Michael _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor