autos

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
singstar
User
Beiträge: 9
Registriert: Freitag 22. Dezember 2006, 13:33

ich hab ein Problem. Ich will, dass die Teile sich gleichzeitig bewegen.
Vielen Dank im voraus!

Code: Alles auswählen

from meinBuntkreis import *
from meinBuntrechteck import *

from grafik import *
import time
meinZeichenblatt.erstellen('gelb.gif')

class WanderObjekte:
    def __init__(self):
        self.geschwindigkeit =0.1
        self.teile = []
        self.dx =0
        self.dy = 0
        #self.richtung=(0,0)
        self.strecke =0
        
    def aufbauen(self,teil):
        self.teile.append(teil)
    def setzeRichtung(self,s):
        pass
    
    def setzeStrecke(self,ds):
        self.ds = ds
        #self.strecke=ds
    def setzeGeschwindigkeit(self,v):
        self.setzeGeschwindigkeit = v

    def bewegen(self):
        for teil in self.teile:
            teil.pos_versetzen_um(self.dx, self.dy)
            teil.zeigen()
        time.sleep(self.geschwindigkeit)
        meinZeichenblatt.refresh()
        strecke=-2
        
auto=WanderObjekte()
dach=Buntquadrat(150,150,100,'blau')
auto.aufbauen(dach)

reifen=Buntkreis(50,160,300,'schwarz')
auto.aufbauen(reifen)

reifen2=Buntkreis(50,290,300,'schwarz')
auto.aufbauen(reifen2)
  
r=Rechteck()
r.setPos(80,180,400,280)
r.setFarbe('blau')
r.setFuellfarbe('blau')
r.zeigen()


dach.langsam_wandern_um(100)
reifen.langsam_wandern_um(100)
reifen2.langsam_wandern_um(100)
r.pos_versetzen_um(100,120)
Redprince
User
Beiträge: 128
Registriert: Freitag 22. Oktober 2004, 09:22
Wohnort: Salzgitter
Kontaktdaten:

singstar hat geschrieben:ich hab ein Problem. Ich will, dass die Teile sich gleichzeitig bewegen.
Dann schreib dein Script doch einfach um!
singstar hat geschrieben:Vielen Dank im voraus!
Gern geschehen. Du hast doch hoffentlich nicht gedacht, dass sich jetzt jemand in dein Script einarbeitet und dir die fertige Lösung auftischt?
Guck dir Threads an.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi Leute!

:D Hier haben wir es gefunden -- das Beispiel dafür, warum man keine Stern-Importe machen soll. Schon bei so einem kurzen Skript kann man nur ahnen, woher die Objekte kommen.

@singstar: Das soll ein Scherz sein, richtig? Man bräuchte schon eine wirklich große Glaskugel, um zu erahnen, was sich da im Hintergrund abspielt und wie man diese, aus der Luft gegriffenen, Teile zum Wandern bringt.

Aus der Zeile ``meinZeichenblatt.refresh()`` schließe ich mal, dass es sich wahrscheinlich nicht um ein wxPython-Programm handelt. Dort wäre das "R" im "refresh" groß geschrieben.

mfg
Gerold
:-)

PS: Vielleicht könnte mal jemand dem Michael Weigend und dem Gregor Lingl ein Email schreiben und mitteilen, was ich von diesen Sternimporten in Lehrbüchern halte. Das kriegen wir hier nie wieder gerade gebogen. Ich kann dabei kaum ruhig bleiben -- ich würde denen viel zu schlimme Wörte an den Kopf werfen. :roll:
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Hier haben wir es gefunden -- das Beispiel dafür, warum man keine Stern-Importe machen soll
:D und los gehts --> Anpinnen!

btw:

Mir ist in einigen Lehrbüchern ebenfalls aufgefallen, das gerne über die PEP's einfach drüber weggeschaut wird... so kommen eben auch Bezeichnungen wie

Code: Alles auswählen

def meineFunktion():
    pass
anstatt

Code: Alles auswählen

def meine_funktion():
    pass
zustande...

was natürlich nicht das Problem ist... aber ich finde, ein Lehrbuch sollte das zumindest erwähnen oder gar selber konsequent umsetzen... (wobei selbet das konsequent manchmal zu wünschen übrig lässt)...
fragt mich jetz net nach Beispielexemplaren... is mir beim durchstöbern bei Thalia-Buchhandlung aufgefallen,... ;)

EDIT:
@singstar:
fass das nicht soooo negativ auf. Es soll im Enddefekt dir nur zeigen, das du A, nicht alleine bist und B, das du teilweise nichts dafür kannst ;)
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

die antwort war zwar schon da, aber evtl nicht ersichtlich:

wenn irgendetwas in einem programm gleichzeitig passieren soll, dann muss das auch gleichzeitig ablaufen. da ein programm aber immer zeile für zeile abläuft geht das eigentlich nicht.
abhilfe sind threads. jeder thread läuft eine bestimmte zeit, danach wird zu dem nächsten weitergeschaltet.

hier ein minimalbeispiel:

Code: Alles auswählen

import thread
import time

def my_thread( t, name):
    while True:
        print name
        time.sleep( t )

if __name__ == "__main__":

  thread.start_new_thread( my_thread, ( 0.5, "A" ) )
  thread.start_new_thread( my_thread, ( 1.0, "B" ) )
  
  while(True):
      pass
  

da das aber eine schulaufgabe zu sein scheint, würde es mich doch sehr wundern, wenn ihr euch selbstständig in threading einarbeiten sollt....
BlackJack

Threads können allerdings bei den meisten GUI-Toolkits problematisch werden, die mögen es nämlich nicht, wenn auf die API von verschiedenen Threads aus zugegriffen wird.

Oft bieten die GUI-Toolkits eine Möglichkeit Code regelmässig, oder zumindest nach einer bestimmten Zeit asynchron auszuführen. Bei `Tkinter` geht das beispielsweise mit der `after()`-Methode von Widget-Objekten.
Antworten