Vous connaissez des façons créatives d'interfacer Python avec Tcl?

Voici la situation. La compagnie pour laquelle je travaille a un peu de code Tcl existant, mais certains d'entre eux veulent commencer à utiliser python. Il serait bon de pouvoir réutiliser une partie du code Tcl existant, parce que c'est de l'argent déjà dépensé. De plus, certains équipements d'essai n'ont que des API Tcl.

donc, une des façons dont j'ai pensé était d'utiliser le module subprocess pour appeler dans quelques scripts Tcl.

  • le sous-traitement est-il ma meilleure option?
  • quelqu'un A utilisé ce relativement nouveau morceau de code: Plumage? Si oui, quelle est votre expérience (et pas seulement pour les Savoirs traditionnels)?
  • y a-t-il d'autres moyens possibles que je n'ai pas envisagés?
17
demandé sur Mark 2009-06-17 03:40:11

3 réponses

j'espère que vous êtes prêt pour cela. Standard Python

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

Modifier dans Re de commentaire: l'interpréteur tcl de Python n'est pas au courant des autres composants tcl installés. Vous pouvez gérer cela en ajoutant des extensions de la manière habituelle aux utilisations réelles de tcl python. Voici un lien avec quelques détails

19
répondu SingleNegationElimination 2009-06-17 17:13:04

Cela peut être fait.

http://wiki.tcl.tk/13312

regardez spécifiquement l'extension typcl.

Typcl est un peu bizarre... C'est une extension pour utiliser Tcl Python. Il ne nécessite pas vraiment CriTcl et aurait pu être fait dans la norme C.

ce code démontre l'utilisation de Tcl comme bibliothèque partagée, et s'y rattache à l'exécution (L'architecture stubs de Tcl rend cette simple.) De plus, Typcl évite les conversions de chaînes lorsque cela est possible (dans les deux sens).

3
répondu Byron Whitlock 2009-06-19 21:47:17

Je ne l'ai pas utilisé moi-même, mais SWIG pourrait vous aider:

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

0
répondu user9755 2009-06-16 23:50:04