Python使用Tkinter tcl.eval将多个参数传递给tcl proc

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

如何使用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 $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
      函数