Использование функций Python в Tkinter.Tcl ()
У меня есть куча функций Python. Давайте назовем ихfoo
, bar
а такжеbaz
, Они принимают переменное число строковых аргументов и делают другие сложные вещи (например, доступ к сети).
Я хочу, чтобы «пользователь» (предположим, он знаком только с Tcl) писал сценарии на Tcl с использованием этих функций.
Вот пример (взят изMacPorts) этот пользователь может придумать:
post-configure {
if {[variant_isset universal]} {
set conflags ""
foreach arch ${configure.universal_archs} {
if {${arch} == "i386"} {append conflags "x86 "} else {
if {${arch} == "ppc64"} {append conflags "ppc_64 "} else {
append conflags ${arch} " "
}
}
}
set profiles [exec find ${worksrcpath} -name "*.pro"]
foreach profile ${profiles} {
reinplace -E "s|^(CONFIG\[ \\t].*)|\\1 ${conflags}|" ${profile}
# Cures an isolated case
system "cd ${worksrcpath}/designer && \
${qt_dir}/bin/qmake -spec ${qt_dir}/mkspecs/macx-g++ -macx \
-o Makefile python.pro"
}
}
}
Вот,variant_issset
, reinplace
(кроме встроенных в Tcl) реализованы как функции Python.if
, foreach
, set
и т. д. являются обычными конструкциями Tcl.post-configure
является функцией Python, которая принимает, в общем, блок кода Tcl, который впоследствии может быть выполнен (что, в свою очередь, в конечном итоге вызовет вышеупомянутые "функции" Python).
Это возможно сделать в Python? Если так, то как?
from Tkinter import *; root= Tk(); root.tk.eval('puts [array get tcl_platform]')
это единственная известная мне интеграция, которая, очевидно, очень ограничена (не говоря уже о том, что она запускает сервер X11 на Mac).