Image im Canvas

Fragen zu Tkinter.
Antworten
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Ich will nem Rechteck im Canvas ein Image,
dass sich dann später bewegen soll...

Wie funktioniert das!?

.:[Python RuleZ]:. 8)
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

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
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

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...
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

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
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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: )
Gast

Naja, mal schaun.
Dann ist das Begrüßungsfenster schonmal fertig.

Muss mir nur noch nen paaa gifs machen...

Danke für die Tipps :)
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

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?
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

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
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

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
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Oops, der Gast war ich.
Mein Browser hat sich nicht eingeloggt :oops:
Freu mich schon voll auf mein Informatikprojekt :D
Kanns kaum noch abwarten.
Antworten