Usar funciones de Python en Tkinter.Tcl ()
Tengo un montón de funciones de Python. Vamos a llamarlosfoo
, bar
ybaz
. Aceptan un número variable de argumentos de cadena y hacen otras cosas sofisticadas (como acceder a la red).
Quiero que el "usuario" (supongamos que solo esté familiarizado con Tcl) escriba scripts en Tcl utilizando esas funciones.
Aquí hay un ejemplo (tomado deMacports) a ese usuario se le puede ocurrir:
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"
}
}
}
Aquí,variant_issset
, reinplace
están así sucesivamente (aparte de las incorporaciones Tcl) implementadas como funciones de Python.if
, foreach
, set
, etc. son construcciones normales de Tcl.post-configure
es una función de Python que acepta, bueno, un bloque de código Tcl que luego puede ejecutarse (que a su vez, obviamente, terminaría llamando a las "funciones" de Python mencionadas anteriormente).
¿Es esto posible en Python? ¿Si es así, cómo?
from Tkinter import *; root= Tk(); root.tk.eval('puts [array get tcl_platform]')
es la única integración que conozco, que obviamente es muy limitada (sin mencionar el hecho de que inicia el servidor X11 en Mac).