dynamic buttons with tkinter
Matthew Dixon Cowles
matt at mondoinfo.com
Sat Jun 29 22:55:22 EDT 2002
On Sat, 29 Jun 2002 22:17:17 +0200, Mirko Koenig <koenig at v-i-t.de>
wrote:
> for file in os.listdir( dir ):
> Button( load_dlg_frame, text=file, relief=GROOVE,
> command=load).pack()
> But how can i find out which button is pressed? Or another
> question: How can i pass a event funktion more than 1 parameter (the
> event and other things). I can't give any button a new event
> function, because it's dynamic, because of the number of files in
> the directory.
Dear Mirko,
For the callback function, give Tkinter an object that has a __call__
method. When you create the object, you can give it the filename and
its __call__ method can use the name when the button is clicked. Danny
Yoo has a recipe that does just that at:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66521
The general concept of giving a function some or all of its arguments
in advance of calling it is called "currying". There are other recipes
there that do the same thing in a more general way and other
information about its uses around the Net.
Regards,
Matt
More information about the Python-list
mailing list