如何绑定到类中的函数并仍然使用事件变量?

时间:2017-09-15 14:08:28

标签: python-3.x class tkinter

class Player():
    def __init__():
        ...
    def moveHandle(self, event):
        self.anything = ...
box.bind("<Key>", Player.moveHandle)

bind函数将self设置为事件变量,并忽略/抛出事件错误。即使我使用args *,我也找不到将事件参数传递给正确变量并为该函数维护self的方法。我可以做其中一个,但不能两个都做。

我可能只是缺乏一些关于课程的基本知识,说实话,我教给自己并且没有彻底地做到这一点。

如果我犯了语法错误,那是因为我错误地重写了代码;在我的程序中,代码一直有效,直到变量通过。

1 个答案:

答案 0 :(得分:2)

问题是您正在尝试将实例方法用作类方法。

consider the following:
class Player():
    def __init__():
        ...
    def moveHandle(self, event):
        self.anything = ...
box.bind("<Key>", Player.moveHandle)

其中box是某事物的实例,但Player不是。{ 而是这个:

class Player():
    def __init__(self):
        ...
    def moveHandle(self, event):
        self.anything = ...
p = Player()
box.bind("<Key>", p.moveHandle)

创建一个player类的实例,然后绑定到instances方法,而不是类方法。