Usando funções Python em Tkinter.Tcl ()
Eu tenho um monte de funções Python. Vamos chamá-losfoo
, bar
ebaz
. Eles aceitam número variável de argumentos de string e fazem outras coisas sofisticadas (como acessar a rede).
Quero que o "usuário" (suponha que ele esteja familiarizado apenas com o Tcl) escreva scripts no Tcl usando essas funções.
Aqui está um exemplo (tirado deMacports) que o usuário pode criar:
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"
}
}
}
Aqui,variant_issset
, reinplace
são ativados (exceto os embutidos no Tcl) são implementados como funções do Python.if
, foreach
, set
, etc. são construções Tcl normais.post-configure
é uma função Python que aceita, bem, um bloco de código Tcl que pode ser executado mais tarde (que, por sua vez, obviamente acabaria chamando as "funções" acima mencionadas de Python).
Isso é possível fazer em Python? Se sim, como?
from Tkinter import *; root= Tk(); root.tk.eval('puts [array get tcl_platform]')
é a única integração que conheço, que é obviamente muito limitada (sem mencionar o fato de que ele inicia o servidor X11 no mac).