Verwenden von Python-Funktionen in Tkinter.Tcl ()

Ich habe eine Reihe von Python-Funktionen. Nennen wir siefoo, bar undbaz. Sie akzeptieren eine variable Anzahl von String-Argumenten und erledigen andere anspruchsvolle Dinge (wie den Zugriff auf das Netzwerk).

Ich möchte, dass der "Benutzer" (nehmen wir an, er ist nur mit Tcl vertraut) mit diesen Funktionen Skripte in Tcl schreibt.

Hier ist ein Beispiel (entnommen aus Macports) dieser Benutzer kann kommen mit:

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"
        }
    }
}

Hier,variant_issset, reinplace are so on (außer Tcl builtins) sind als Python-Funktionen implementiert.if, foreach, set, etc .. sind normale Tcl-Konstrukte.post-configure ist eine Python-Funktion, die einen Tcl-Codeblock akzeptiert, der später ausgeführt werden kann (was wiederum offensichtlich dazu führen würde, dass die oben genannten Python- "Funktionen" aufgerufen werden).

Ist das in Python möglich? Wenn das so ist, wie

from Tkinter import *; root= Tk(); root.tk.eval('puts [array get tcl_platform]') ist die einzige mir bekannte Integration, die offensichtlich sehr begrenzt ist (ganz zu schweigen von der Tatsache, dass sie den X11-Server auf dem Mac startet).

Antworten auf die Frage(4)

Ihre Antwort auf die Frage