I have a bunch of Python functions. Let\'s call them foo
, bar
and baz
. They accept variable number of string arguments and do
@Brian - I had to experiment in order to get the right result
from Tkinter import Tcl
tcl = Tcl()
result = tcl.eval(' puts "hello, world" ')
Note the placement of the single and double quotes. This gave me the expected output: hello, world
Any other combinations of single or double quotes resulted in the following traceback:
File "<stdin>", line 1, in <module>
_tkinter.TclError: can not find channel named "hello,"
--- fracjackmac
With a little experimentation I discovered you can do something like this to create a tcl interpreter, register a python command, and call it from Tcl:
import Tkinter
# create the tcl interpreter
tcl = Tkinter.Tcl()
# define a python function
def pycommand(*args):
print "pycommand args:", ", ".join(args)
# register it as a tcl command:
tcl_command_name = "pycommand"
python_function = pycommand
cmd = tcl.createcommand(tcl_command_name, python_function)
# call it, and print the results:
result = tcl.eval("pycommand one two three")
print "tcl result:", result
When I run the above code I get:
$ python2.5 /tmp/example.py
pycommand args: one, two, three
tcl result: None