[Tkinter-discuss] Convert Tk command string to Python callback
Michael Lange
klappnase at web.de
Thu Nov 17 16:47:11 CET 2005
On Wed, 16 Nov 2005 11:45:17 -0800
"Russell E. Owen" <rowen at cesmail.net> wrote:
> In article <20051114215954.07accbed.klappnase at web.de>,
> Michael Lange <klappnase at web.de> wrote:
>
> > ...I just wondered if there is a way to ...access the associated python callback from the tk command
> > string...
>
> I hope this helps. I've appended code that registers python functions to
> be called from tcl/tk. This is from my RO python package
> <http://www.astro.washington.edu/rowen/>, from RO.TkUtil.
>
Thanks Russell,
In the meantime I jfound another way to achieve what I want; I store the python comands in a _callbacks dictionary with
the tk command strings as keys. I had to write a hacked version of _bind() for that, but I had to
do so anyway. After the line
cmd = ('if {"[%s %s]" == "break"} break\n' % (funcid, self._subst_format_str_dnd))
in _bind() I added
self._callbacks[cmd] = func
so I can do now something like:
def deliver_event(self, event, sequence):
res = 'break'
tclCmd = self.bind(sequence)
try:
callback = self._callbacks[tclCmd]
res = callback(event)
except KeyError:
pass
return res
Then I can write handlers for several events like this:
def deliver_sequence1(self, event):
return self.deliver_event(event, sequence1)
This seems to work pretty well.
Regards
Michael
More information about the Tkinter-discuss
mailing list