Seite 1 von 1

Image im Canvas

Verfasst: Freitag 21. Februar 2003, 21:18
von Pythonaya
Ich will nem Rechteck im Canvas ein Image,
dass sich dann später bewegen soll...

Wie funktioniert das!?

.:[Python RuleZ]:. 8)

Verfasst: Freitag 21. Februar 2003, 23:58
von hans
Hi Pyhonaya

bisschen dünne deine Infos :? Kannst du mal posten mit was du das umzusetzen versuchst? TKInter, QT, Windows, Linux, Mac, ..... Oder hast du dich noch nicht festgelegt, weil du noch ganz am Anfang der Programmierung in Python stehst?

Hans

Verfasst: Samstag 22. Februar 2003, 11:30
von Pythonaya
Ich programmier mit TK!
Python kenn ich aus meinem Informatikkurs.
Desshalb kenn ich mich noch nicht sooo gut darin aus.
Für mich wars selbstverständlich, dass ich mit Tk programmiere.

Zum Prog.:
Idee war, ein einem Canvas eine Animation zu starten.
Ein Segelboot (-image in Rechteckform), dass immer von links nach rechts durchfährt. Im Hintergrund ein "Blauer Himmel"-Image. Unter dem Segelbootimage sollen sich drei kleine Wellen befinden, die sich immer von links nach rechts und wieder zurück bewegen.
Ausgang für diese Idee war ein Projekt, dass mir im zweiten Halbjah der 10. Klasse bevorsteht.

Der Code:

Code: Alles auswählen

from Tkinter import*
from thread import*
from time import*
from random import*
from winsound import*

root=Tk()
kissen = Canvas(root, relief = SUNKEN, border = 4, width = 250, height = 250, background = "white")
kissen.pack(padx = 5, pady = 5)

rechts = kissen.create_rectangle(10, 50, 100, 140, fill = "Black")
kreis3 = kissen.create_oval(10, 140, 100, 230, fill = "Green")
kreis2 = kissen.create_oval(10, 150, 100, 240, fill = "Yellow")
kreis = kissen.create_oval(10, 160, 100, 250, fill = "Blue")


class test:
    def __init__(self, x, y):
        self.p=160
        self.q=250
        self.d=50
        self.f=140
        self.control=1
        self.x=x
        self.y=y
    def snd(self):
        while 1:
            PlaySound("D:\Testmusic",0)
            sleep(143)
    def tt(self):
        global kreis, kreis2, kreis3
        while 1:
            self.d=self.d+1
            self.f=self.d+90
            if self.d==160:
                self.d=1
                self.f=91           
            if self.control==1:
                self.x=self.x+1
                self.p=self.p-1
            if self.control!=1:
                self.x=self.x-1
                self.p=self.p+1
            if self.x==1:
                self.control=1
            if self.x==160:
                self.control=0
            self.q=self.p+90
            self.y=self.x+90
            
            kissen.coords(rechts,self.d, 40 , self.f, 160)
            
            kissen.coords(kreis,self.x, 160, self.y, 250)
            kissen.coords(kreis2, self.p, 150, self.q, 240)
            kissen.coords(kreis3,self.x, 140, self.y, 230)
            sleep(0.01)

t=test(10,100)
start_new_thread(t.tt,())
start_new_thread(t.snd,())
Die drei Kreise sollen nachher die Wellen sein.
Das "rechts" wird das Segelboot
Und das Canvas wird der Himmel bzw Hintergrund.

Die Musik ist erstmal nebensächlich...

Verfasst: Samstag 22. Februar 2003, 14:54
von Voges
Hallo Pythonaya!

Im Prinzip bist Du schon fertig. Ich hab' mal Deine gewählten Bezeichner unverändert gelassen.
Ersetze
rechts = kissen.create_rectangle(10, 50, 100, 140, fill = "Black")
kreis3 = kissen.create_oval(10, 140, 100, 230, fill = "Green")
kreis2 = kissen.create_oval(10, 150, 100, 240, fill = "Yellow")
kreis = kissen.create_oval(10, 160, 100, 250, fill = "Blue")

durch
img1 = PhotoImage(file='segelboot.gif')
img2 = PhotoImage(file='welle.gif')
rechts = kissen.create_image(145,280, image=img1, anchor=CENTER)
kreis3 = kissen.create_image(145,280, image=img2, anchor=CENTER)
kreis2 = kissen.create_image(145,280, image=img2, anchor=CENTER)
kreis = kissen.create_image(145,280, image=img2, anchor=CENTER)

und ersetze
kissen.coords(rechts,self.d, 40 , self.f, 160)
kissen.coords(kreis,self.x, 160, self.y, 250)
kissen.coords(kreis2, self.p, 150, self.q, 240)
kissen.coords(kreis3,self.x, 140, self.y, 230)

durch
kissen.coords(rechts,self.d, 160)
kissen.coords(kreis,self.x, 250)
kissen.coords(kreis2, self.p, 240)
kissen.coords(kreis3,self.x, 230)


Der Hintergrundbereich der gif-Dateien muss natürlich transparent sein. Das ganze sieht in Bewegung auf jeden Fall absolut klasse aus. Fehlt nur noch die Sounddatei mit dem Shanty-Chor (grusel)!
Jan

Verfasst: Samstag 22. Februar 2003, 15:11
von Milan
jo, sieht sogar sehr Klasse aus Bild. Ich hab das ganze mal nach Voges mit eigenen Bilder getestet und man könnte es glatt für ein eigenes gut gemachtes gif halten --> super. :D (sagt mir im Hinterkopf, ich sollte mir mal wieder Tkinter anschauen :wink: )

Verfasst: Samstag 22. Februar 2003, 16:09
von Gast
Naja, mal schaun.
Dann ist das Begrüßungsfenster schonmal fertig.

Muss mir nur noch nen paaa gifs machen...

Danke für die Tipps :)

Verfasst: Samstag 22. Februar 2003, 23:04
von Voges
Anonymous hat geschrieben:Muss mir nur noch nen paaa gifs machen...
Hallo!
Ich möchte meine Version des Segeltörns Euch nun doch nicht vorenthalten ;-): http://www.0xffff.de/segelboot.zip
Das war die netteste Zeitverschwendung seit langem. Bitte den Python-Code nicht zu genau angucken. Ich hab' einfach nur in Pythonayas Code rumgehäckt bis es einigermaßen hinkam. Und auch das Segelboot ist noch der Erstentwurf.

Enjoy
Jan

PS: Hat jemand 'ne Sound-Datei mit Möwengeschrei?

Das Herumhacken auf MEINEM CODE

Verfasst: Sonntag 23. Februar 2003, 10:40
von Pythonaya
Das Herumhacken auf MEINEM CODE
ist dir ziemlich gut gelungen!
Sieht echt Klasse aus

Hab in meiner "Soundbibliothek" nachgeguckt:
Keine Möwen da!!!

Es sei denn, du ersetzt deine Möwen durch Spacemöwen, Robocop oder Batman *ggg* 8)

Im Netz gibs bestimmt welche (irgendwo...)
Mein Versuch ist eher Misslungen. Das Boot war zu groß, das Convas zu klein, die Möwen gabs nicht, die Wellen waren zu kurz und der Sound war aus nem Freewarespiel gecacht... :cry:

Gruß an die Pythoncrew,
Florian

Verfasst: Sonntag 23. Februar 2003, 20:22
von hans
Läuft sogar unter Linux. Nur das Mövengeschrei will da nicht so richtig in den Mozilla.

Mövegeschrei soll nämlich hier http://home.swipnet.se/~w-100542/ sein. mehr Möwengeschrei kann man gut bei www.altavista.de finden.

Hans

Versorrygung bitte!!!

Verfasst: Freitag 7. März 2003, 20:52
von Pythonaya
Oops, der Gast war ich.
Mein Browser hat sich nicht eingeloggt :oops:
Freu mich schon voll auf mein Informatikprojekt :D
Kanns kaum noch abwarten.