Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用函数指针作为Python参数调用Tcl过程_Python_Tkinter_Tcl - Fatal编程技术网

使用函数指针作为Python参数调用Tcl过程

使用函数指针作为Python参数调用Tcl过程,python,tkinter,tcl,Python,Tkinter,Tcl,可以从Python调用具有函数指针(或回调函数)的Tcl过程吗? 我使用Tkinter从Python调用Tcl过程 Python代码段: proc callbackFunc(): print "I am in callbackFunc" cb = callbackFunc Tkinter.Tk.call('tclproc::RetrieveInfo', cb) proc tclproc::RetrieveInfo() { callback } { eval $callback

可以从Python调用具有函数指针(或回调函数)的Tcl过程吗? 我使用Tkinter从Python调用Tcl过程

Python代码段:

proc callbackFunc():
    print "I am in callbackFunc"

cb = callbackFunc
Tkinter.Tk.call('tclproc::RetrieveInfo', cb)
proc tclproc::RetrieveInfo() { callback } {
    eval $callback
}
Tcl代码段:

proc callbackFunc():
    print "I am in callbackFunc"

cb = callbackFunc
Tkinter.Tk.call('tclproc::RetrieveInfo', cb)
proc tclproc::RetrieveInfo() { callback } {
    eval $callback
}
注意:我不能修改Tcl代码,因为它是我的应用程序的外部库


//Hemanth是的,你的伪代码非常接近。您必须向Tcl解释器注册python代码。这将创建一个调用python代码的tcl命令。然后,只要将此新tcl命令传递给需要过程名称的tcl过程,就可以引用它。事情是这样的:

import Tkinter
root=Tkinter.Tk()

# create a python callback function
def callbackFunc():
    print "I am in callbackFunc"

# register the callback as a Tcl command. What gets returned
# must be used when calling the function from Tcl
cb = root.register(callbackFunc)

# call a tcl command ('eval', for demonstration purposes)
# that calls our python callback:
root.call('eval',cb)
这里有一小部分文档: