Oft crash, nicht sofort... ich dreh noch durch...
Verfasst: Sonntag 24. Mai 2015, 13:00
Hi,
ich versuche Threads zu erlernen. Aus dem Buch "Objektorientierte Programmierung mit Python" von Weigend lass ich folgenden Code laufen:
Geiler Weise ist das Programm beim ersten Versuch gleich gelaufen. Ich könnte schwören, dass ich den Quellcode nicht angefasst habe, aber der Fehler sitzt meistens an der Tastatur... ich habe den schon zig mal mit der Buchvorlage verglichen...
Meistens fliegt es mir mit "exceptions.EOFError: [Errno 10054]" um die Ohren.
Insgesamt:
ich versuche Threads zu erlernen. Aus dem Buch "Objektorientierte Programmierung mit Python" von Weigend lass ich folgenden Code laufen:
Code: Alles auswählen
from Tkinter import *
from threading import *
from time import *
from random import *
class Weltraum:
def __init__(self):
#seed() # from random
self.fenster = Tk()
self.canvas = Canvas(self.fenster, width = '10c', height = '7c', bg = 'black')
self.canvas.pack()
m1 = 'E:/Wissenschaft/Projekt/Telnet/PythonTests/met1k1.gif'
m2 = 'E:/Wissenschaft/Projekt/Telnet/PythonTests/met2k1.gif'
for bild in [m1, m2, m2, m1, m2, m1, m2]:
Meteor(self, bild)
self.fenster.mainloop()
class Meteor(Thread):
def __init__(self, weltraum, bilddatei):
Thread.__init__(self)
self.w = weltraum
self.c = weltraum.canvas
self.bild = PhotoImage(file=bilddatei)
self.id = self.c.create_image(50, -50, image = self.bild)
self.__neustart()
self.start()
def __neustart(self):
self.c.coords(self.id, randint(0, 250), -randint(30, 100))
self.vx = randint(-2, +2)
self.vy = randint(1, 3)
def run(self):
while 1:
sleep(0.05)
self.c.move(self.id, self.vx, self.vy)
if self.c.coords(self.id)[1] > 300:
self.__neustart()
def main():
w = Weltraum()
if __name__ == '__main__':
main()
Meistens fliegt es mir mit "exceptions.EOFError: [Errno 10054]" um die Ohren.
Insgesamt:
Danke für einen Tipp, was hier schief läuft!Exception in thread Thread-6:
Traceback (most recent call last):
File "C:\Program Files\WinPython-64bit-2.7.6.4\python-2.7.6.amd64\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "E:\Wissenschaft\Projekt\Telnet\PythonTests\meteor1.py", line 37, in run
if self.c.coords(self.id)[1] > 300:
IndexError: list index out of range
Traceback (most recent call last):
File "<string>", line 73, in execInThread
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 196, in __call__
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 431, in sync_request
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 379, in serve
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\protocol.py", line 337, in _recv
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\channel.py", line 50, in recv
File "C:\Program Files\PyScripter\Lib\rpyc.zip\rpyc\core\stream.py", line 166, in read
EOFError: [Errno 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen