[Tutor] Python - TCL Interaction
Alan Gauld
alan.gauld at blueyonder.co.uk
Wed Sep 1 22:38:31 CEST 2004
> I am using Tkinker to interface Python to TCL. I am able
> to call tcl APIs,
While this is possoble its not really a "documented feature"
of Tkinter. ie it's not normal practice!
> Now, the problem is I have to pass a two dimensional list
Whatever you pass to tk.eval needs to be in Tcl speak.
arr = [["apple", "mango", "orange"], ["rose", "jasmine",
"marigold"]]
root.tk.eval('test_tcl_func %s', %(list))
So you can't pass a Python list as a Python list, it will
be interpreted as a Tcl bracketed expression. Instead you
will need to convert the Python list into a Tcl style list
expressed as a string.
So the question is how would you create a multi dimensional
array/list in Tcl? How do you convert a Python list into that
structure? It's basically a string formatting exercise.
So I'd aim to do it in stages:
Basic Tcl List building code:
"set L [list 1 2 3]"
Python:
L1 = [1, 2, 3]
L2 = [4, 5, 6]
tclstr = 'set L1 [list '
for elem in L1:
tclstr += (str(elem) + ' ')
tclstr2 = "sel L2 [list "
for elem in L2:
tclstr += (str(elem) + ' ')
tclstr = tclstr1 + ';' + tclstr2 + ';' + 'set L [list L1 L2]'
Tk.eval(tclstr)
Or something like that, I haven't tested it :-)
Would it really be much harder to convert the Tcl code to Python?
Alan G.
More information about the Tutor
mailing list