【问题标题】:Python 3 binding not workingPython 3 绑定不起作用
【发布时间】:2016-03-23 13:06:42
【问题描述】:

不知何故,我的绑定中只有 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]))

【问题讨论】:

标签: python class tkinter bind python-3.4


【解决方案1】:

焦点位于Tk() 窗口,因此画布不会捕捉按键。要使画布捕捉按键,您需要在画布上focus_set()

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()

我放在那里只是为了演示。你应该根据你的代码选择合适的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 2019-04-25
    • 2013-12-15
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多