Python 3 绑定无效
Python 3 binding not working
我的绑定中只有 2 个有效(鼠标左键和右键)。我在以前的程序中做了很多绑定,但我仍然不知道为什么这不起作用。有人可以帮助我吗?
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]))
焦点在 Tk()
window 上,所以 canvas 没有捕捉到按键。要让 canvas 捕捉按键,您需要 focus_set()
on canvas。
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()
我放在那里只是为了演示。你应该根据你的代码选择合适的地方。
我的绑定中只有 2 个有效(鼠标左键和右键)。我在以前的程序中做了很多绑定,但我仍然不知道为什么这不起作用。有人可以帮助我吗?
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]))
焦点在 Tk()
window 上,所以 canvas 没有捕捉到按键。要让 canvas 捕捉按键,您需要 focus_set()
on canvas。
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()
我放在那里只是为了演示。你应该根据你的代码选择合适的地方。