Associating arguments to an event-handler function : Event « GUI Tk « Python

Python
1. 2D
2. Application
3. Buildin Function
4. Class
5. Data Structure
6. Data Type
7. Database
8. Development
9. Dictionary
10. Event
11. Exception
12. File
13. Function
14. GUI Pmw
15. GUI Tk
16. Language Basics
17. List
18. Math
19. Network
20. String
21. System
22. Thread
23. Tuple
24. Utility
25. XML
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Python » GUI Tk » EventScreenshots 
Associating arguments to an event-handler function
Associating arguments to an event-handler function
 
from Tkinter import *

class curry:
  """from Scott David Daniels'recipe 
  "curry -- associating parameters with a function"
  in the "Python Cookbook
  http://aspn.activestate.com/ASPN/Python/Cookbook/
  """

  def __init__(self, fun, *args, **kwargs):
    self.fun = fun
    self.pending = args[:]
    self.kwargs = kwargs.copy()

  def __call__(self, *args, **kwargs):
    if kwargs and self.kwargs:
      kw = self.kwargs.copy()
      kw.update(kwargs)
    else:
      kw = kwargs or self.kwargs
    return self.fun(*(self.pending + args), **kw)

def event_lambda(f, *args, **kwds ):
  """A helper function that wraps lambda in a prettier interface.
  Thanks to Chad Netzer for the code."""
  return lambda event, f=f, args=args, kwds=kwds : f*args, **kwds )
# ---------- code for function: event_lambda (end-----------
    
    
class MyApp:
  def __init__(self, parent):
    self.myParent = parent   
    self.myContainer1 = Frame(parent)
    self.myContainer1.pack()
    
    button_name = "OK"
    
    # command binding -- using curry
    self.button1 = Button(self.myContainer1,
       command = curry(self.buttonHandler, button_name, 1"Good stuff!"))

    # event binding -- using the event_lambda helper function
    self.button1.bind("<Return>"
      event_lambdaself.buttonHandler, button_name, 1"Good stuff!" ) )
             
    self.button1.configure(text=button_name, background="green")  
    self.button1.pack(side=LEFT)
    self.button1.focus_force()  # Put keyboard focus on button1    
    
    
    button_name = "Cancel"
    
    # command binding -- using curry
    self.button2 = Button(self.myContainer1,
      command = curry(self.buttonHandler, button_name, 2"Bad  stuff!"))
      
    # event binding -- using the event_lambda helper function in two steps
    event_handler = event_lambdaself.buttonHandler, button_name, 2"Bad  stuff!" 
    self.button2.bind("<Return>", event_handler )
    
    self.button2.configure(text=button_name, background="red")
    self.button2.pack(side=LEFT)   

  
  def buttonHandler(self, argument1, argument2, argument3):   
    print "    buttonHandler routine received arguments:", \
      argument1.ljust(8), argument2, argument3
    
  def buttonHandler_a(self, event, argument1, argument2, argument3):
    print "buttonHandler_a received event", event
    self.buttonHandler(argument1, argument2, argument3)
    
root = Tk()
myapp = MyApp(root)
root.mainloop()
           
         
  
Related examples in the same category
1. Binding an event with an event handlerBinding an event with an event handler
2. Sharing Information Between Event-Handler FunctionsSharing Information Between Event-Handler Functions
3. What Events Does 'Command' Bind To?What Events Does 'Command' Bind To?
4. adds callbacks function to a buttonadds callbacks function to a button
5. Add system exit action to a buttonAdd system exit action to a button
6. Update Label in action event
7. Class wrapper for GUI
8. Use lambda to generate a call back function for a buttonUse lambda to generate a call back function for a button
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.