Este es un hilo bastante antiguo, pero recientemente me encontré con Tkinter.Tcl()
que le da acceso directo a un intérprete de Tcl en Python sin tener que generar una GUI Tk como Tkinter.Tk()
requiere.
Un ejemplo ... supongamos que tiene un archivo Tcl (foo.tcl
) con un proc llamado main
que requiere un solo nombre de archivo como un argumento ... main
devuelve una cadena derivada de la lectura foo.tcl
.
from Tkinter import Tcl
MYFILE = 'bar.txt'
tcl = Tcl()
# Execute proc main from foo.tcl with MYFILE as the arg
tcl.eval('source foo.tcl')
tcl_str = tcl.eval('main %s' % MYFILE)
# Access the contents of a Tcl variable, $tclVar from python
tcl.eval('set tclVar foobarme')
tclVar = tcl.eval('return $tclVar')
no he encontrado otra manera de acceder a los objetos de Tcl pitón, además de a través de un valor de retorno, pero esto le dará una forma de interactuar con procsos Tcl. Además, puede exportar funciones de Python a Tcl como se discutió en Using Python functions in Tkinter.Tcl()
Por ejemplo. de Tkinter import *; root = Tk(); root.tk.eval ('puts [array get tcl_platform]'); –
@Colin - como la pregunta dice "poder acceder a objetos Tcl, invocar funciones Tcl, etc.", no debería escribirse su ejemplo para obtener referencia a esa matriz Tcl en Python (en lugar de recuperar la representación de cadena de lo que está impreso)? –
Bueno, acabo de agregar un comentario rápido para darle la idea. También sospecho que la comunicación Python <-> Tcl probablemente tendrá que estar al nivel de pasar los comandos y obtener resultados como cadenas de todos modos, no esperaría que pudieran compartir estructuras de datos. –