Objekte auf Canvas drehen

Fragen zu Tkinter.
Antworten
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

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
daniels7
User
Beiträge: 15
Registriert: Sonntag 30. Dezember 2007, 12:51

vielleicht hilft dir ja der Artikel hier:
http://effbot.org/zone/tkinter-complex-canvas.htm
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

mal sehen, werde es mal damit versuchen, danke daniels7 :D
daniels7
User
Beiträge: 15
Registriert: Sonntag 30. Dezember 2007, 12:51

kein Problem :wink:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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()
Antworten