版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/joyfixing/article/details/52449419
Vivado Tcl调用Python脚本,根据工程规则形成file.list,然后载调用Vivado 的Tcl开始编译 ^ _ ^
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
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
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