Questo è un thread piuttosto vecchio, ma recentemente mi sono imbattuto in Tkinter.Tcl()
che ti dà accesso diretto a un interprete Tcl in python senza dover generare una GUI Tk come Tkinter.Tk()
richiede.
Un esempio ... supponga di avere un file di Tcl (foo.tcl
) con un proc chiamato main
che richiede un singolo nome di file come argomento ... main
restituisce una stringa derivata dalla lettura foo.tcl
.
from Tkinter import Tcl
MYFILE = 'bar.txt'
tcl = Tcl()
# Execute proc main from foo.tcl with MYFILE as the arg
tcl.eval('source foo.tcl')
tcl_str = tcl.eval('main %s' % MYFILE)
# Access the contents of a Tcl variable, $tclVar from python
tcl.eval('set tclVar foobarme')
tclVar = tcl.eval('return $tclVar')
non ho trovato un altro modo per accedere agli oggetti Tcl da Python oltre che attraverso un valore di ritorno, ma questo ti dà un modo di interfacciarsi con procs Tcl. Inoltre, è possibile esportare le funzioni Python in Tcl come discusso in Using Python functions in Tkinter.Tcl()
fonte
2011-05-17 19:55:19
Es. da Tkinter import *; root = Tk(); root.tk.eval ('puts [array get tcl_platform]'); –
@Colin - come la domanda legge "essere in grado di accedere agli oggetti Tcl, richiamare le funzioni Tcl, ecc.", Non dovrebbe essere scritto il tuo esempio per ottenere un riferimento a tale array Tcl in Python (invece di recuperare la rappresentazione stringa di cosa è stampato)? –
Bene, ho appena aggiunto un breve commento per darti l'idea. Inoltre sospetto che la comunicazione Tcl Python <-> dovrà probabilmente essere al livello dei comandi di passaggio e ottenere i risultati come stringhe in ogni caso, non mi aspetto che siano in grado di condividere strutture dati. –