如何使用Tkinter将多个参数传递给tcl proc。我想从python proc validate_op传递3个args到tcl proc tableParser,它有3个args ......
from Tkinter import Tcl
import os
tcl = Tcl()
def validate_op(fetch, header, value):
tcl.eval('source tcl_proc.tcl')
tcl.eval('set op [tableParser $fetch $header $value]') <<<<< not working
proc tableParser { result_col args} {
..
..
..
}
答案 0 :(得分:1)
处理此问题的最简单方法是使用Tkinter模块中的_stringify
函数。
def validate_op(fetch, header, value):
tcl.eval('source tcl_proc.tcl')
f = tkinter._stringify(fetch)
h = tkinter._stringify(header)
v = tkinter._stringify(value)
tcl.eval('set op [tableParser %(f)s %(h)s %(v)s]' % locals())
这两个问题虽然没有回答你的问题,但在回答这个问题时非常有用:
答案 1 :(得分:0)
如果你不坚持使用eval,你也可以这样做:
def validate_op(fetch, header, value):
tcl.eval('source tcl_proc.tcl')
# create a Tcl string variable op to hold the result
op = tkinter.StringVar(name='op')
# call the Tcl code and store the result in the string var
op.set(tcl.call('tableParser', fetch, header, value))
如果你的tableParser
返回一个昂贵的序列化对象的句柄,这可能不是一个好主意,因为它涉及转换为字符串,这在eval情况下是避免的。但是如果你只需要回一个字符串,这很好,你不需要处理Donals回答中提到的_stringify
函数。