On 9 June, 10:35, Bruno Desthuilliers <bruno. 42.desthuilli...@websiteburo.invalid> wrote: > Nick Keighley a crit :
> > I'm trapping mouse clicks using > > > canvas.bind("<ButtonRelease-1>", mouse_clik_event) > > > def mouse_clik_event (event) : > > stuff > > > What mouse_clik_event does is modify some data and trigger a redraw. > > Is there any way to pass data to the callback function? Some GUIs give > > you a user-data field in the event, does Tkinter? > > Never used TkInter much, but if event is a regular Python object, you > don't need any "user-data field" - just set whatever attribute you want, ie: [...] > >>> class Event(object): pass > ... > >>> e = Event() > >>> e.user_data = "here are my data" > >>> e.user_data > 'here are my data' > >>> > > But I fail to see how this would solve your problem here - where would > you set this attribute ??? Those other GUIs also give you a mechanism to pass the data. Say another parameter in the bind call > > Or am I reduced to using <spit> global data? A Singleton is just > > Global Data by other means. > > >>> from functools import partial > >>> data = dict() > >>> def handle_event(event, data): > ... data['foo'] = "bar" > ... print event > ... > >>> p = partial(handle_event, data=data) ah! the first time I read this I didn't get this. But in the mean time cobbled something together using lambda. Is "partial" doing the same thing but a little more elegantly? > >>> p(e) > <__main__.Event object at 0xb75383ec> > >>> data > {'foo': 'bar'} > >>> > > Note that data doesn't have to be global here. # callback for mouse click event def mouse_clik_event (event, data) : dosomething (event.x, event.y, data) draw_stuff (display, data) data = Data(6.0, 0.2, 0.3) draw_stuff (display, data) # snag mouse display.canvas.bind("<ButtonRelease-1>", lambda event: mouse_clik_event (event, mandelbrot)) -- There are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns -- the ones we don't know we don't know. -- http://mail.python.org/mailman/listinfo/python-list