2010-09-21 13 views
6

¿Es posible llamar a procedimientos de Tcl que tienen punteros de función (o funciones de devolución de llamada) desde Python? Estoy usando Tkinter para llamar a procedimientos de Tcl desde Python.Llamar a procedimientos de Tcl con punteros de función como argumento desde Python

Python Fragmento:

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

cb = callbackFunc 
Tkinter.Tk.call('tclproc::RetrieveInfo', cb) 

Tcl Fragmento:

proc tclproc::RetrieveInfo() { callback } { 
    eval $callback 
} 

Nota No se puede modificar el código Tcl como una biblioteca externa a mi solicitud.

// Hemanth

Respuesta

7

Sí, y su pseudocódigo es bastante estrecha. Debe registrar su código python con el intérprete Tcl. Esto creará un comando tcl que llamará a su código python. A continuación, hace referencia a este nuevo comando tcl cada vez que lo pasa a un procedimiento Tcl que espera un nombre de procedimiento. Es algo parecido a esto:

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) 

Una pequeña cantidad de documentación está aquí:

http://epydoc.sourceforge.net/stdlib/Tkinter.Misc-class.html#register

+0

Gracias !!! Su enlace de documentación también es muy útil. – Hemanth

Cuestiones relacionadas