Seite 1 von 1

Objekte auf Canvas drehen

Verfasst: Dienstag 10. Februar 2009, 18:53
von jonas
Hi,
ich schreibe gerade ein kleines Spiel, bei dem ich Objekte
die ich auf einem Canvas Objekt gezeichnet habe drehen möchte.
Mein Frage ist, ob das möglich ist mit Tkinter.

Code: Alles auswählen

import Tkinter

if __name__ == "__main__":

    root = Tkinter.Tk()
    canvas = Tkinter.Canvas()
    canvas.pack()
    sword = canvas.create_polygon((0,0),(20,0),(20,-40),(15,-40),(15,-45), (20,-45),(20,-60),(0,-60),(0,-45),(5,-45),(5,-40),(0,-40),(0,0))
    ## Sorry, dass die Zeile so lang ist
    root.mainloop()
Wie kann ich jetzt mein Sword um einen best.
Winkel drehen?

MfG Jonas :D

Verfasst: Dienstag 10. Februar 2009, 19:04
von daniels7
vielleicht hilft dir ja der Artikel hier:
http://effbot.org/zone/tkinter-complex-canvas.htm

Verfasst: Dienstag 10. Februar 2009, 19:15
von jonas
mal sehen, werde es mal damit versuchen, danke daniels7 :D

Verfasst: Dienstag 10. Februar 2009, 19:21
von daniels7
kein Problem :wink:

Re: Objekte auf Canvas drehen

Verfasst: Dienstag 10. Februar 2009, 20:23
von numerix
jonas hat geschrieben:ich schreibe gerade ein kleines Spiel, bei dem ich Objekte
die ich auf einem Canvas Objekt gezeichnet habe drehen möchte.
Mein Frage ist, ob das möglich ist mit Tkinter.
Ja und nein. Es ist möglich, allerdings nicht ohne Mathematik, da das Tkinter-Canvas keine fertigen Methoden dafür mitbringt.

Eine Alternative wäre das frog-Modul, das auch - falls gewünscht - als Canvas in eine Tkinter-GUI eingebunden werden kann, da es auf Tkinter basiert. Konkret heißt das, dass du an Stelle eines Canvas einen Pool nimmst. Das frog-Modul verfügt über entsprechende Möglichkeiten zum drehen von Polygonen. Sähe z.B. so aus:

Code: Alles auswählen

from frog import Frog, Pool

pool = Pool()
frog = Frog(pool)
frog.shape = (0,0),(20,0),(20,-40),(15,-40),(15,-45), (20,-45),(20,-60),(0,-60),(0,-45),(5,-45),(5,-40),(0,-40),(0,0)
for angle in xrange(0,361):
    frog.turnto(angle)
pool.ready()