Code: Alles auswählen
from Tkinter import *
class Spielfeld:
def __init__(self,master,Hoehe,Breite):
self.oben=['w','Up']
self.unten=['s','Down']
self.rechts=['d','Right']
self.links=['a','Left']
self.breite=Breite
self.hoehe=Hoehe
self.master=master
self.farbe='white'
self.aktivfarbe='red'
self.fram=Frame(self.master)
self.dict={}
self.fram.bind_all('<Any-KeyPress>',self.Steuerung)
self.pos=1
self.linksliste=range(1,self.breite*self.hoehe+1,self.breite)
self.rechtsliste=range(self.breite,self.breite*self.hoehe+1,self.breite)
def Richtung(self,event):
return self.event.keysym
def Feld(self):
anz=self.hoehe*self.breite
row=1
column=1
for i in range(1,anz+1):
if column%(self.breite+1)==0:
column=1
row+=1
if i==1:
lab=Label(self.fram,bg=self.aktivfarbe,width=4,height=2,relief='ridge').grid(row=row,column=column)
else:lab=Label(self.fram,bg=self.farbe,width=4,height=2,relief='ridge').grid(row=row,column=column)
column+=1
self.dict[i]=lab
return self.fram
def aktualisieren(self):
for i in range(1,self.breite*self.hoehe+1):
self.dict[i].config(bg=self.farbe)
self.dict[self.pos].config(bg=self.aktivfarbe)
def Steuerung(self,event):
richtung=self.Richtung(self)
if richtung in self.oben+self.unten+self.rechts+self.links:
if richtung in self.oben and self.pos > self.breite:
self.pos-=self.breite
if richtung in self.unten and self.pos < (self.breite*self.hoehe)-self.breite:
self.pos+=self.breite
if richtung in self.rechts and self.pos not in self.rechtsliste:
self.pos+=1
if richtung in self.links and self.pos not in self.linksliste:
self.pos-=1
aktualisieren()
if __name__=='__main__':
root=Tk()
a=Spielfeld(root,10,10)
a.Feld().pack()
mainloop()
das Problem:
ich bekomme folgende Fehlermeldung
kann mir vielleicht einer helfen, wie ich das Problem beheben kann??Exception in Tkinter callback
Traceback (most recent call last):
File "D:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__
return self.func(*args)
File "T:\classpos.py", line 40, in Steuerung
richtung=self.Richtung(self)
File "T:\classpos.py", line 20, in Richtung
return self.event.keysym
AttributeError: Spielfeld instance has no attribute 'event'
Danke schonmal im Voraus
Gruß jAN
Edit (Leonidas): Code im Python-Tags gestellt und verschoben.