tcl调用python文件并传参

来源:互联网 发布:yii2 cms 编辑:程序博客网 时间:2024/06/05 19:07

项目开发中需要用到tcl调用python实现一些tcl无法实现的功能,mark下。

tcl调用python文件无传参

首先新建一个add.py文件,该文件实现两个数的相加并返回结果,python中函数返回值用return实现,如果想要让python文件中值返回给tcl程序必须在python中print该值,add.py文件代码如下:

#-*- coding: UTF-8 -*-  def add(a,b):    return a+bsum = add(10,20)print sum   

然后新建一个add.tcl文件,在该文件中调用python文件,代码很简单,如下:

set sum [exec python add.py]puts $sum

此时sum的值为30,表明调用add.py成功。

tcl调用python文件有传参

python文件接收参数通过sys模块实现,比如执行python add.py 10 20,在add.py中print sys.argv['add.py', '10', '20'],那么sys.argv[1]和sys.argv[2]就分别等于10和20了,add.py代码如下:

# -*- coding: UTF-8 -*-  import sysdef add(a,b):    return int(a)+int(b)sum = add(sys.argv[1],sys.argv[2])print sum

相应的add.tcl代码如下

set sum [exec python add.py 10 20]puts $sum

此时输出结果为30

python调用tcl

顺便讲讲python如何调用tcl,首先我们写一个tcl脚本,命名为test.tcl,文件内容如下,这个脚本里只有一个函数,返回两个值的和,非常简单。

proc add {n m} {    return [expr $n+$m]}

接下来我们看看Python脚本,其实是在Python中建立了一个tcl解释器,然后在python中就可以用tcl解释器执行tcl中的函数了,此时tcl_str等于30。

from Tkinter import Tcl#建立一个tcl的解释器tcl = Tcl()#导入tcl文件tcl.eval('source test.tcl')#调用函数,tcl_str为返回值tcl_str=tcl.eval('add 10 20')print tcl_str

输出30

0 0