Это довольно старый поток, но я недавно наткнулся на Tkinter.Tcl()
, который дает вам прямой доступ к интерпретатору Tcl в python без необходимо указать TK GUI, поскольку Tkinter.Tk()
требует.
Пример ... Предположим, у вас есть файл Tcl (foo.tcl
) с прока названием main
, который требует одного файла в качестве аргумента ... main
возвращает строку, полученную от чтения 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')
Я не нашел еще один способ доступа к объектам Tcl из питона, кроме через возвращаемое значение, но это действительно дает вам возможность взаимодействовать с Tcl проки. Кроме того, вы можете экспортировать функции python в Tcl, как описано в Using Python functions in Tkinter.Tcl()
Например. из Tkinter import *; root = Tk(); root.tk.eval ('puts [array get tcl_platform]'); –
@Colin - поскольку вопрос гласит: «Возможность доступа к объектам Tcl, вызывать функции Tcl и т. Д.», Не следует писать ваш пример, чтобы получить ссылку на этот массив Tcl в Python (вместо получения строкового представления что напечатано)? –
Ну, я просто добавил быстрый комментарий, чтобы дать вам эту идею. Также я подозреваю, что Python <-> Tcl-связь, вероятно, должна быть на уровне передачи команд и получения результатов как строк в любом случае, я бы не ожидал, что они смогут делиться структурами данных. –