xturtle und mac

Probleme bei der Installation?
Serge
User
Beiträge: 3
Registriert: Donnerstag 19. Juni 2008, 13:38

Donnerstag 19. Juni 2008, 14:07

Liebe Leute,

erstmal: heute habe ich mich hier angemeldet und danke Euch dafür, daß es ein solches Forum gibt! :D

Ich versuche schon seit längerem das Modul xturtle (eine Erweiterung von Gregor Lingl, das auf der CD zum Buch Python für Kids mitgeliefert wird) auf einem mac zu installieren. Ich nutze Mac OS X 10.5.2, auf dem ja auch ein Unix-System mitgeliefert wird.
Deshalb habe ich versucht, gemäß der Diskussion in den folgend verlinkten beiden Beiträgen vorzugehen:
1. "xturtle-Modul (aus Python für Kids) unter Linux verwenden" (http://www.python-forum.de/topic-13088.htm)
2."xTurtle und Mac"
(http://www.python-forum.de/post-79602.html#79602)

Was habe ich bis jetzt getan?
Ich nutze Python 2.5
Ich habe die Dateien xturtle.py und docsdict_german.py in folgenden Ordner kopiert: /usr/lib/python2.5/lib-tk/

Es wurde auch vorgeschlagen, diese Dateien in den Ordner site-packages zu kopieren. Allerdings gibt es diesen Ordner in /usr/lib/python2.5 bei mir auf dem mac nicht. Ich habe ihn allerdings unter diesem Pfad gefunden: /Library/Python/2.5/site-packages gefunden und dort auch diese beiden Dateien hineinkopiert.

Allerdings ohne jeden Erfolg. So konnte ich weder am Terminal noch in IDLE das modul mit dem Befehl "from xturtle import *" importieren. Jedesmal kommt folgende Fehlermeldung:
"Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named xturtle"

Weiß einer von Euch vielleicht weiter und kann mir helfen?

Vielen Dank Serge
Serge
User
Beiträge: 3
Registriert: Donnerstag 19. Juni 2008, 13:38

Donnerstag 19. Juni 2008, 14:45

Liebe Leute,

ich habe jetzt selbst eine Lösung gefunden. Man muß anscheinend die Datei xturtle.py und docsdict_german.py in folgenden Ordner kopieren, dann funktioniert der import des Moduls xturtle sowohl unter dem Terminal als auch unter IDLE :roll:

/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk

Warum es den Ordner lib-tk allerdings zweimal gibt (einmal unter dem obigen Pfad und ein zweitesmal unter /usr/lib/python2.5/lib-tk) verstehe ich nicht.

Vielleicht weiß jemand weiter?
christian_
User
Beiträge: 7
Registriert: Montag 23. Juni 2008, 15:51

Montag 23. Juni 2008, 15:55

Hallo,

auch ich hatte/habe ein ähnliches Problem, habe auch die Dateien in das oben genannte Lib Verzeichnis kopirt aber aber Python funtioniert mit xturtle nur teilweise:

beim starten eines Programms ist alles um 90Grad nach rechts gedreht und dann am Ende des jeweiligen PRogrammablaufs hängt er sich das Programm auf und nur der alt bekannte Apple Ball erscheint bis ich das Prgramm dann manuel beende

wisst ihr woran das liegen könnte?

System: MacPython 2.5.2 unter Leopard
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 16:02

Hallo christian_, willkommen im Forum.

WAS ist um 90° gedreht?

Am besten zeigst du uns ein Stück von deinem Code und sagst, was er machen soll bzw. was er nicht macht.
christian_
User
Beiträge: 7
Registriert: Montag 23. Juni 2008, 15:51

Montag 23. Juni 2008, 16:38

Hallo,

nun ich habe den Code unter windows geschrieben und dort läuft er so wie er sein sollte.

Als ich ihn unter macpython laufen lassen wollte, war das xturtle-ausgabe fenster um 90 gedreht (also da wo dann die schildkröte langläuft)

gruß

bin aber nicht ganz sicher ob ich xturtle richtig eingebunden habe
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 16:52

christian_ hat geschrieben:nun ich habe den Code unter windows geschrieben und dort läuft er so wie er sein sollte.

Als ich ihn unter macpython laufen lassen wollte, war das xturtle-ausgabe fenster um 90 gedreht (also da wo dann die schildkröte langläuft)
Ist immer noch nicht eindeutig: Meinst du mit "Fenster" das gesamte Fenster inkl. Fensterdekoration? Oder nur den Fensterinhalt (bei xturtle wäre das ein Tkinter-Canvas-Widget)?

Falls es nur das Innere des Fensters ist:
Soweit ich mich erinnere, gibt es in xturtle zwei Basismodi für die Grundausrichtung der Turtle (entweder 0° = rechts oder 0° = oben).
Eine mögliche Erklärung wäre dann, dass unter MacOS ein anderer Modus voreingestellt ist als unter Windows. Da man diesen Modus manuell einstellen kann, wäre das Problem in diesem Fall vermutlich lösbar.
christian_
User
Beiträge: 7
Registriert: Montag 23. Juni 2008, 15:51

Montag 23. Juni 2008, 16:57

entschuldige,

das meinte ich auch, also es dreht sich nur der fensterinhalt.

und was ich damit, dass sich nach dem ablauf der grafikzeichnung von xturtle das fenster aufhängt? also manuell geschlossen werden muss, (bei mac unter sofort beenden ählich Str/alt/ent unter windows) das kann ja so auch nicht gewollt sein
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 17:14

christian_ hat geschrieben:und was ich damit, dass sich nach dem ablauf der grafikzeichnung von xturtle das fenster aufhängt? also manuell geschlossen werden muss, (bei mac unter sofort beenden ählich Str/alt/ent unter windows) das kann ja so auch nicht gewollt sein
Nee, ist nicht gewollt. Sollte sich abstellen lassen, dürfte etwas mit der Tkinter-mainloop() zu tun haben. Da wäre ein Stück Code hilfreich, dann lässt sich das besser bzw. eindeutiger erklären.

Und nochmal zur Drehung: Ist es gegenüber der Windowsdarstellung um 90° nach RECHTS oder nach LINKS gedreht?
christian_
User
Beiträge: 7
Registriert: Montag 23. Juni 2008, 15:51

Montag 23. Juni 2008, 17:25

nach rechts gedreht

ausgabe imn idle:

Traceback (most recent call last):
File "/Users/christian/Documents/_Python/nuclear.py", line 28, in <module>
circle(160,60);lt(90);fd(160);rt(120)
File "<string>", line 1, in rt
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 1352, in right
self._rotate(-angle)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 2797, in _rotate
self._update()
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 2370, in _update
t._pencolor, t._pensize)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 447, in _drawline
self.cv.coords(lineitem, *cl)
File "<string>", line 1, in coords
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 2134, in coords
self.tk.call((self._w, 'coords') + args)))
TclError: invalid command name ".13572216"
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 18:52

christian_ hat geschrieben: Traceback (most recent call last):
File "/Users/christian/Documents/_Python/nuclear.py", line 28, in <module>
circle(160,60);lt(90);fd(160);rt(120)
File "<string>", line 1, in rt
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 1352, in right
self._rotate(-angle)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 2797, in _rotate
self._update()
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 2370, in _update
t._pencolor, t._pensize)
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/xturtle.py", line 447, in _drawline
self.cv.coords(lineitem, *cl)
File "<string>", line 1, in coords
File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 2134, in coords
self.tk.call((self._w, 'coords') + args)))
TclError: invalid command name ".13572216"
Oh! :shock:

Ein bisschen mehr Code als der Schnipsel aus dem Traceback sollte es schon sein. Oder ist das zu geheim? (nuclear.py klingt ja sehr gefährlich ...)

Was an der einen Zeile aber schon auffällt:
Die Angewohnheit, mehrere Anweisungen/Ausdrücke hintereinander in eine Zeile zu schreiben und mittels ; zu trennen, solltest du dir wieder abgewöhnen. Das ist zwar syntaktisch möglich, aber für Python ganz und gar untypisch (jedenfalls, wenn man nicht im interaktiven Modus arbeitet).

Es sieht so aus, als hinge der Fehler mit dem rt() zusammen, und zwar an der Stelle, an der die Anweisung an Tkinter weitergereicht wird. Für mich sieht das eher wie ein Problem der Tkinter-Version für MacOS aus als nach einem Fehler in xturtle.

Wenn du den geheimen Code postest, könnte ich es zumindest unter Linux mal testen.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 19:02

:idea:
Mir kommt gerade ein Verdacht: Ich schätze mal, das rt() ist die letzte Anweisung in deinem Programm. Dann hängt es, du killst es und DANN kommt die Fehlermeldung. Richtig?

Dann hat es doch mit der mainloop() zu tun.
Darum also: Poste mal den ganzen geheimen Nuklearcode :wink:
christian_
User
Beiträge: 7
Registriert: Montag 23. Juni 2008, 15:51

Montag 23. Juni 2008, 19:54

hallo das ist nur eine lehrbuchanweisung aus python für kids, keine große sache udn schon gar nix schweres im prinzip

from xturtle import *

reset();hideturtle()

#rahmen

pencolor("black");pensize(4);fillcolor("yellow")

penup();fd(200);pendown()

begin_fill()

lt(90);fd(200);lt(90);fd(400);lt(90);fd(400);lt(90);fd(400);lt(90);fd(200)

end_fill()

pencolor("black");pensize(4);fillcolor("black")

penup();home();rt(90);fd(60);lt(90);pendown()

begin_fill();circle(60),end_fill()

pu();rt(90);fd(100);lt(90);pd()

begin_fill()

circle(160,60);lt(90);fd(160);rt(120)

end_fill()

begin_fill()

fd(160);lt(90);circle(160,60);lt(90);fd(160);rt(120)

end_fill()

begin_fill()

fd(160);lt(90);circle(160,60);lt(90);fd(160);rt(120)

end_fill()
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 20:01

Wichtig Wichtig Wichtig:
Wenn du Code postest, dann verwende dafür die Code-Tags in der Eingabemaske des Forums. Oberhalb des Eingabefeldes gibt es einige Buttons, da findest du den richtigen. Das macht das Lesen von Code einfacher.

Jetzt zur Lösung deines Problems (vielleicht):

Code: Alles auswählen

from xturtle import *

reset();hideturtle() 
mode("logo") # nur Mac-Version
Rest wie gehabt

Und dann als letzte Zeile:

Code: Alles auswählen

mainloop()
Im Modus "logo" ist 0° nicht rechts, sondern oben. Allerdings werden Winkelmaße dann auch nicht gegen, sondern im Uhrzeigersinn interpretiert ...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 23. Juni 2008, 20:29

Noch ein Nachtrag:
Falls du (noch) nicht auf xturtle festgelegt bist oder es (z.B. wegen dem Einsatz in der Schule) einsetzen musst: Es gibt eine für meinen Geschmack interessante Alternative Namens frog.

Dein Nuklear-Programm sieht damit z.B. so aus:

Code: Alles auswählen

from frog import *

pool = Pool(width=600,height=600)
frog = Frog(pool,visible=False)
frog.speed = 5
frog.width = 4
frog.fill = True
frog.fillcolor = "yellow"
frog.pos= -200,-200
for k in range(4):
    frog.move(400)
    frog.turn(90)
frog.home()
frog.angle = 30
frog.fillcolor = "black"
for k in range(3):
    frog.move(160)
    frog.turn(90)
    frog.circle(160,60)
    frog.turn(90)
    frog.move(160)
    frog.turn(-120)
frog.home()
frog.dot(120)
pool.ready()
Zwar gibt es kein gedrucktes Buch wie für xturtle, aber eine recht ausführliche deutschsprachige Dokumentation (dafür ist die aber im Unterschied zum xturtle-Buch kostenlos :wink: ).

Ob frog auf dem Mac läuft, weiß ich nicht.
Zum Testen würde es genügen, das Modul frog.py in den gleichen Ordner zu kopieren wie das Skript, das das Modul verwendet.
christian_
User
Beiträge: 7
Registriert: Montag 23. Juni 2008, 15:51

Montag 23. Juni 2008, 20:57

wow,

hat geklappt,

vielen Danke für die tolle Hilfe
Antworten