Python使用Tkinter tcl向tcl proc传递多个参数。

2024-09-30 03:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用Tkinter将多个参数传递给tcl proc。我想从python proc validate_op向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} {

  ..
..
..

}

Tags: fromimport参数valueostkinterevalfetch
2条回答

处理此问题的最简单方法是使用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())

这两个问题虽然没有回答您的问题,但在回答时非常有用:

如果不坚持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 answer中提到的_stringify函数。在

相关问题 更多 >

    热门问题