Python使用Tkinter tcl.eval将多个参数传递给tcl proc
如何使用Tkinter将多个参数传递给tcl proc。我想从python proc validate_op将3个参数传递给tcl proc tableParser,它有3个参数Python使用Tkinter tcl.eval将多个参数传递给tcl proc,python,tkinter,tcl,Python,Tkinter,Tcl,如何使用Tkinter将多个参数传递给tcl proc。我想从python proc validate_op将3个参数传递给tcl proc tableParser,它有3个参数 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 $f
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} {
..
..
..
}
从Tkinter导入Tcl
导入操作系统
tcl=tcl()
def validate_op(提取、标题、值):
tcl.eval('source tcl\u proc.tcl')
tcl.eval('set op[tableParser$fetch$header$value]”)处理此问题的最简单方法是使用Tkinter模块中的\u 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())
这两个问题虽然没有回答您的问题,但在回答时很有用:
如果您不坚持评估,您也可以这样做:
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回答中提到的\u stringify
函数