2016-03-23 10 views
1

Irgendwie funktionieren nur 2 meiner Bindungen (linke und rechte Maustaste). Ich habe in meinen früheren Programmen einige Bindungen gemacht, aber ich habe keine Ahnung, warum das nicht funktioniert. Könnte mir jemand helfen?Python 3 Bindung funktioniert nicht

class Window: 
    def __init__(self): 
     self.win=Tk() 
     self.can=Canvas(self.win, height=800, width=800, bg="grey90") 
     self.can.grid(row=0, column=0) 

class Player: 
    def __init__(self, bind1, bind2): 
     win.can.bind(bind1, self.moveleft) 
     win.can.bind(bind2, self.moveright) 
    def moveleft(event, self): 
     print("left") 
    def moveright(event, self): 
     print("right") 

class Manage: 
    def __init__(self, numofplayers): 
     self.numofplayers=numofplayers 
     self.players=[] 
     self.bindings1=["<Left>", "<Button-1>", "<a>", "<m>"] 
     self.bindings2=["<Right>", "<Button-3>", "<s>", "<n>"] 
     self.start() 
    def start(self): 
     for i in range(self.numofplayers): 
      self.players.append(Player(self.bindings1[i], self.bindings2[i])) 
+2

Mögliches Duplikat von [Tkinter - Pfeilereignisse können nicht gebunden werden] (http://stackoverflow.com/questions/19895877/tkinter-cant-bind-arrow-key-events) – radl

Antwort

2

Der Schwerpunkt liegt auf Tk() Fenster so Leinwand nicht Taste drückt verfängt. Um Canvas Catch Tasten drücken, müssen Sie focus_set() auf Leinwand.

class Window(object): 
    def __init__(self): 
     self.wind=Tk() 
     self.can=Canvas(self.wind, height=800, width=800, bg="grey90") 
     self.can.grid(row=0, column=0) 
     self.can.focus_set() 

Ich habe dort zu zeigen, nur zu. Sie sollten den entsprechenden Platz entsprechend Ihrem Code auswählen.

Verwandte Themen