我不断收到以下错误:
AttributeError: Caribou instance has no attribute 'on_key_up'
问题是,我很确定我确实有那个属性......
以下是我的代码(来自 caribou.py)的一些摘录:
def on_key_up(self, event):
if event.event_string == "Shift_R":
_r_shift_down = False
elif event.event_string == "Shift_L":
_l_shift_down = False
这是导致错误的行:
pyatspi.Registry.registerKeystrokeListener(caribou.on_key_up, mask=None, kind=(pyatspi.KEY_RELEASED_EVENT,))
有人看到我做错了什么吗?
谢谢!
编辑:哎呀——我是这样创建驯鹿实例的:
caribou = Caribou()
请您参考如下方法:
OP 在评论中提到 dir(caribou) 给他:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
所以它肯定看caribou是一个模块——通常没有其他东西有__builtins__ 等等。然而,错误消息清楚地提到了一个 Caribou 实例——所以我想在那个 dir 调用和以下尝试访问 caribou.on_key_up。
显然,OP 多次使用了那个心爱的 caribou 标识符(在某些时候它绑定(bind)到 Caribou 实例,但在其他时候它显然是一个模块,而且 OP 确实提到了一个caribou.py,导入后显然将成为名为 caribou 的模块。
所以我的建议是澄清命名。例如,使用
caribou_instance = Caribou()
不是将另一个值绑定(bind)到 caribou 名称,而是将 caribou 的所有使用替换为 实例(而不是模块)驯鹿实例。这可能会给你一个不同的错误,这可能会提供更多信息。
