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