2009-06-16 12 views
17

Aquí está la situación. La compañía para la que trabajo tiene bastante código Tcl existente, pero algunos de ellos quieren comenzar a usar Python. Sería bueno poder reutilizar parte del código Tcl existente, porque ese es el dinero ya gastado. Además, algunos de los equipos de prueba solo tienen API Tcl.¿Conoce alguna forma creativa de interactuar Python con Tcl?

Por lo tanto, una de las formas en que pensé fue utilizar el módulo de subproceso para llamar a algunas secuencias de comandos Tcl.

  • ¿Es el subproceso mi mejor apuesta?
  • ¿Alguien ha usado este código bastante nuevo: Plumage? Si es así, ¿cuál es tu experiencia (no solo para Tk)?
  • ¿Alguna otra posibilidad que no haya considerado?

Respuesta

19

Espero que estés listo para esto. Estándar de Python

import Tkinter 
tclsh = Tkinter.Tcl() 
tclsh.eval(""" 
    proc unknown args {puts "Hello World!"} 
    }"!dlroW olleH" stup{ sgra nwonknu corp 
""") 

Editar en Re para comentar: TCL intérprete de Python no tiene conocimiento de otros componentes instalados TCL. Puede lidiar con eso agregando extensiones de la manera habitual al tcl python que realmente usa. Aquí hay un enlace con cierto detalle

+0

Gracias por la sugerencia. ¿Qué tan bien funciona esto con otras bibliotecas Tcl que están instaladas? –

+0

Hmm. Ahora que lo pienso, el comentario acerca de que no esté al tanto de otras instalaciones de TCL puede depender de los detalles de la plataforma. En la instalación binaria de Windows al menos, no hay opción de usar otro TCL.No me sorprendería si una compilación desde la fuente puede usar cualquier tcl disponible. – SingleNegationElimination

+0

Gracias de nuevo TokenMacGuy. Eso ayuda mucho. A pesar de que he estado trabajando con Python durante bastante tiempo, nunca he investigado el módulo Tkinter (prefirió wxPython). Simplemente pensé que eran widgets de GUI puros, en lugar de Tcl incrustado en Python. Ese último enlace fue muy útil también. –

0

No he utilizado yo mismo, pero TRAGO podría ayudarle a cabo:

http://www.swig.org/Doc1.1/HTML/Tcl.html

+0

Creo que esto se utiliza para envolver código C o C++ con lenguajes de alto nivel. –

+0

Derecha: uno * podría * construir una solución con SWIG, pero no es una solución tan directa como "importar Tkinter" o los proyectos similares a Typcl. –

3

Esto se puede hacer.

http://wiki.tcl.tk/13312

especificamente vistazo a la extensión typcl.

Typcl es un poco raro ... Es una extensión de utilizar Tcl de Python. No requiere realmente CriTcl y se podría haber hecho en la norma C.

Este código muestra el uso de Tcl como biblioteca compartida, y enganchando en él en tiempo de ejecución (arquitectura talones de TCL hace que este deliciosamente simple). Además, Typcl evita las conversiones de cadenas siempre que sea posible (en ambos sentidos).

+0

Interesante. Supongo que esto es para sistemas Unix y no para Windows. –

+0

Sí y no: solo conozco Typcl en Unix, pero todas sus partes son multiplataforma; no me sorprendería si una pequeña "relativización" de caminos bastara para hacerlo funcionar bajo Windows. En cualquier caso, la página Wiki ya mencionada apunta a otras variantes de este tema que * se * han ejercido bajo Windows. –

Cuestiones relacionadas