embedded wxPython, Python-Code aus c++ aufrufen



  • Hi!

    Ich habe vor, mein Programm mit python als skript/plugin-system zu erweitern. Als GUI-Toolkit verwende ich wxWidgets, daher möchte ich als zusatzmodul für python wxPython verwenden, um gut mit der GUI zu interagieren.

    Dazu habe ich wxPython mit den von mir verwendeten Libs kompiliert, das läuft auch alles super. Weiterhin habe ich zu Testzwecken mit Swig ein einfaches Interface für python erstellt und eingebunden. Alles klappt, ich kann sowohl in python als auch in c++ fenster erstellen etc.

    Das Problem ist die Parameterübergabe: Während ich von Python nach C++ mittels swig ein Interface habe (ich kann also Funktionen in c++ schreiben, welche ein wxFrame* erwarten, und diese von python aus aufrufen), geht das andersrum nicht.

    Habe mir dazu boost::python angeschaut, dachte auch erst, das ist genau das, was ich brauche, bis ich merkte, dass ich alle Datentypen, die ich an python übergeben will, in boost.python registrieren muss, da sonst kein pendant in python gefunden werden kann (ist ja auch logisch).

    Meine Frage ist nun, ob ihr etwas kennt, um auch Daten von c++ nach Python zu übergeben. Alle Klassen und Datentypen etc., die ich übergeben möchte, sind python schon bekannt über das swig-interface von wxpython. Jetzt müsste ich nur noch mein wxFrame aus c++ an python übergeben zB.
    Es geht mit der PythonC-API, aber das ist ein schreckliches Gewurschtel. Die API von wxPython in C++ ist auch nicht viel angenehmer.

    boost.python fällt aus, da ich nicht das gesamte wx-interface neu für boost bearbeiten will. Außer es gibt Möglichkeiten, boost zu sagen, wie die Objekte in python heißen oder so.

    Habt ihr irgendwelche Vorschläge zum Problem?

    Gruß, Maxi


Log in to reply