有没有创造性的方法将Python与Tcl连接?

18 投票
3 回答
13511 浏览
提问于 2025-04-15 12:17

情况是这样的。我所在的公司有很多现成的Tcl代码,但有些人想开始使用Python。能够重用一些现有的Tcl代码会很好,因为这些代码已经花了钱。此外,有些测试设备只有Tcl的接口。

所以,我想到的一种方法是使用subprocess模块来调用一些Tcl脚本。

  • 使用subprocess模块是最好的选择吗?
  • 有没有人使用过这个比较新的工具:Plumage? 如果有,你的体验如何(不仅仅是针对Tk)?
  • 还有其他我没有考虑到的可能方法吗?

3 个回答

0

我自己没用过,但SWIG可能对你有帮助:

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

3

这件事是可以做到的。

http://wiki.tcl.tk/13312

特别要关注一下 typcl 这个扩展。

Typcl 有点奇怪……它是一个让你可以在 Python 中使用 Tcl 的扩展。

其实它并不需要 CriTcl,也可以用标准的 C 语言来实现。

这段代码展示了如何把 Tcl 当作共享库来使用,并在运行时连接到它(Tcl 的 stubs 架构让这变得非常简单)。

此外,Typcl 尽量避免字符串转换(无论是从 Python 到 Tcl 还是反过来)。

19

希望你准备好了。标准的Python

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

在Re中编辑以评论:Python的tcl解释器并不知道其他已安装的tcl组件。你可以通过通常的方式向Python实际使用的tcl添加扩展来解决这个问题。这里有一个链接,里面有一些详细信息:

撰写回答