关闭

tcl调用python文件并传参

标签: pythontcl
1536人阅读 评论(2) 收藏 举报
分类:

项目开发中需要用到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+b

sum = 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 sys

def 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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33181次
    • 积分:544
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论