Embedded Python funktioniert nicht!?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hallo, ich versuche gerade Python in mein C++ Programm zu bekommen.

Py_Initialize();
PyRun_SimpleString("from Tkinter import *");
PyRun_SimpleString("root = Tk()");
PyRun_SimpleString("w = Label(root, text='Hello, world!')");
PyRun_SimpleString("Outport = 5 ** 4");
PyRun_SimpleString("w.pack()");
PyRun_SimpleString("root.mainloop()");
Py_Finalize();
Ich wollte versuchen ob auch die Grafik ausgeführt wird, leider ohne Erfolg, es passiert nämlich leider gar nichts. Weiß einer woran dies funktionieren könnte?

Das Python Framework habe ich natürlich auch mit eingebunden und #include <Python/Python.h> mit in mein Main Programm gesetzt. Er gibt auch keine Fehlermeldung aus, aber eventuell mach ich ja was falsch.

Danke :)
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hab noch eine Alternative gefunden


Py_Initialize();
PyRun_SimpleString("from Tkinter import *"
"root = Tk()");
"root, text='Hello, world!')"
"Outport = 5 ** 4"
"w.pack()"
"root.mainloop()");
Py_Finalize();
In einer Py Datei läuft alles bestens, aber nicht sorum. Irgendwas mach ich falsch :-(
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Das hier ist übrigens die Fehlermeldung.

Last login: Thu Apr 10 12:18:59 on ttys000
/Users/Don/Desktop/test/build/Release/test ; exit;
dons-mac-pro:~ Don$ /Users/Don/Desktop/test/build/Release/test ; exit;
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 1631, in __init__
baseName = os.path.basename(sys.argv[0])
AttributeError: 'module' object has no attribute 'argv'
logout

[Prozess beendet]
AttributeError: 'module' object has no attribute 'argv' <-- okay, ich muss die sys.argv setzen. Wie würde ich das denn imm Code machen?
BlackJack

Hast Du die Doku und das Tutorial schon durchgearbeitet?

In der API Doku steht bei `Py_Initialize()` zum Beispiel folgender Satz: "It does not set sys.argv; use PySys_SetArgv() for that."
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hi! VIEEELEN DANK!

Danke, die Parameter habe ich gesetzt und von der main Prozedur übernommen die Argumente. Zwei Fragen hätte ich noch die mich derzeit beschäftigen:

1. Was ist eigentlich ein "Bus Error" wenn ich ein embeded Python Skript ausführe?

2. Ich programmiere derzeit ein Plugin für ein Programm das die Anbindung für Python herstellen soll. Er führt jetzt die Operationen aus die ich ein Textfeld meines Plugins eingebe. Wenn ich nun aber ein "Formular" oder einen Button erstelle den er in ein neues Formular macht, hängt es.

Muss ich dafür Threads erstellen? Wie könnte das ablaufen? Hätte eventuell jemand ein Tutorial wo es um die nutzung von Python Embeded Threads geht? Die API ist mir LEIDER ein wenig zu wirr...

Danke nochmals
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hi!

Jemand eine Idee? Scheint nicht gerade verbreitet zu sein diese Thematik, oder? :)

Bye
BlackJack

Idee zu was? Dem Quelltext, den wir nicht kennen!?
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hi!

Hätte ja sein können das sich jemand mit Python Embedded beschäftigt.
BlackJack

Es könnte auch sein, das man nichts sagen kann, wenn man nicht weiss, was Du wie machst.
Antworten