是否可以从Python调用具有函数指针(或回调函数)的Tcl过程? 我正在使用Tkinter从Python调用Tcl程序。
Python片段:
proc callbackFunc():
print "I am in callbackFunc"
cb = callbackFunc
Tkinter.Tk.call('tclproc::RetrieveInfo', cb)
Tcl片段:
proc tclproc::RetrieveInfo() { callback } {
eval $callback
}
注意我不能将Tcl代码修改为我的应用程序的外部库。
// Hemanth
答案 0 :(得分:7)
是的,你的伪代码非常接近。您必须使用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)
这里有一些文档:
http://epydoc.sourceforge.net/stdlib/Tkinter.Misc-class.html#register