代码之家  ›  专栏  ›  技术社区  ›  Sridhar Ratnakumar

从python访问tcl函数的示例

  •  5
  • Sridhar Ratnakumar  · 技术社区  · 16 年前

    elmer 允许从tcl运行python代码。另一条路怎么样?有人能用python来举个例子吗?

    更新 :我的意思是,能够访问tcl对象、调用tcl函数等,而不是 只是跑步 一些tcl代码。

    4 回复  |  直到 15 年前
        1
  •  7
  •   Community Mohan Dere    9 年前

    这是一条相当古老的线索,但我最近偶然发现 Tkinter.Tcl() 它允许您直接访问python中的tcl解释器 不必生成tk gui Tkinter.Tk() 要求 是的。

    一个例子…假设您有一个tcl文件( foo.tcl )用一个叫做 main 需要一个文件名作为参数… 主要的 返回从读取派生的字符串 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')
    

    除了通过返回值之外,我还没有找到从python访问tcl对象的其他方法,但这确实为您提供了一种与tcl procs接口的方法。此外,可以将python函数导出到tcl中,如中所述 Using Python functions in Tkinter.Tcl()

        2
  •  4
  •   Lucas S.    16 年前

    您可以看看pythonttkinter标准模块,它是一个到tk ui的绑定,但是它在后台执行tcl代码。

        3
  •  1
  •   schlenk    16 年前

    虽然理论上可以通过提供一些自定义的python对象类型来透明地包装c级tcl_obj*,但一般情况下只是来回交换字符串,因为tcl的eias语义可以自由地消除所有其他内部表示。

    所以,是的,你可以做得比弦更好,但通常不值得。Tkinter已经内置了一些可能的优化,所以试着去偷…

        4
  •  -3
  •   S.Lott    16 年前

    这个?

    import subprocess
    subprocess.Popen( "tclsh someFile.tcl", shell=True )