On Jun 12, 2008, at 12:22, Guilherme Polo wrote:


######################
# BEGIN: class Command
# LIB:Command():2006.110
# Pass arguments to functions from button presses and menu selections! Nice!
# In your declaration:  ...command = Command(func, args,...)
# Also use in bind() statements
#     x.bind("<****>", Command(func, args...))
class Command:
  def __init__(self, func, *args, **kw):
      self.func = func
      self.args = args
      self.kw = kw
  def __call__(self, *args, **kw):
      args = self.args+args
      kw.update(self.kw)
      apply(self.func, args, kw)
# END: class Command


You don't need all that machinery tho, something simpler like:

def command(func, *args, **kw):
   def _wrapper(*wargs):
       return func(*(wargs + args), **kw)

   return _wrapper

would work too. But considering that code is using "apply", I will
take it as really old and outdated by now.


Ooo. Much better. I got mine from Grayson's book which says it originally came from a Tim Evans post to the Python newsgroup.

Thanks!

Bob


_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to