Python

2010-09-21 13 views
6

'dan bağımsız değişken olarak işlev işaretçileriyle Tcl yordamlarını çağırma Python'dan işlev işaretçileri (veya geri arama işlevleri) olan Tcl yordamlarını çağırmak mümkün mü? Python'dan Tcl yordamlarını aramak için Tkinter kullanıyorum.Python

Python Parçacığı:

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

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

Tcl Parçacığı:

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

Not benim uygulamaya olarak onun harici kütüphane Tcl kodunu değiştiremez.

// Hemanth

cevap

7

Evet ve senin yalancı kod oldukça yakındır. Python kodunuzu Tcl yorumlayıcısına kaydetmelisiniz. Bu, python kodunuzu çağıran bir tcl komutu oluşturacaktır. Daha sonra, bu yeni tcl komutunu, bir yordam adı bekleyen bir Tcl yordamına ilettiğinizde başvurursunuz. Bu böyle şeyler:

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) 

belgelerin bir nebze buradadır:

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

+0

Teşekkür !!! Dokümantasyon bağlantınız da çok kullanışlıdır. – Hemanth