首页 > 解决方案 > Anki 插件开发:创建编辑器按钮时出错

问题描述

我正在尝试在 Anki 工具栏中添加一个按钮。

有效!

但是,当我单击按钮时,它会显示一条错误消息,它似乎是一个事件侦听器。

我需要做什么?
我试图实现onBridgeCmd,但它不起作用(我不知道如何实现)。

在此处输入图像描述

def blur_text(editor):
    showdialogtitle(editor.currentField, 'anki')

def addBlurButton(buttons,editor):
    editor._links['blur_text'] = blur_text    
    buttons += [editor._addButton(ICON_PATH, "blur","Blur Text")]
    return buttons 

addHook("setupEditorButtons",addBlurButton)

错误:

调试信息:Anki 2.1.35 (4e12c7ef) Python 3.8.5 Qt 5.12.2 PyQt 5.12.1 平台:Linux 标志:frz=False ao=True sv=2 附加组件,最后更新检查:2021-01-21 14 :27:50 可能涉及的附加组件:Anki IPA、blur_text、search_in_dictionaries</p>

捕获的异常:回溯(最近一次调用最后):文件“/snap/anki-woodrow/27/lib/python3.8/site-packages/aqt/webview.py”,第 37 行,在 cmd 返回 json.dumps(self .onCmd(str)) 文件“/snap/anki-woodrow/27/lib/python3.8/site-packages/aqt/webview.py”,第 123 行,在 _onCmd 返回 self._onBridgeCmd(str) 文件“/snap /anki-woodrow/27/lib/python3.8/site-packages/aqt/webview.py”,第 547 行,在 _onBridgeCmd 中返回 self.onBridgeCmd(cmd) 文件“”,第 2 行,在 onBridgeCmd 文件中“/snap/ anki-woodrow/27/lib/python3.8/site-packages/anki/hooks.py”,第 638 行,在 decorator_wrapper 中返回 repl(*args, **kwargs) 文件“/snap/anki-woodrow/27/lib /python3.8/site-packages/anki/hooks.py”,第 635 行,在 repl 中返回 new(_old=old, *args, **kwargs) 文件“/home/element/snap/anki-woodrow/27/ .本地/共享/Anki2/addons21/search_in_dictionaries/ init.py”,第 230 行,on_bridge_cmd _old(editor, command) 文件“”,第 2 行,onBridgeCmd 文件“/snap/anki-woodrow/27/lib/python3.8/site-packages/anki/hooks.py ",第 638 行,在 decorator_wrapper 返回 repl(*args, **kwargs) 文件 "/snap/anki-woodrow/27/lib/python3.8/site-packages/anki/hooks.py",第 635 行,在 repl返回新的(_old=old,*args,**kwargs)文件“ /home/element/snap/anki-woodrow/27/.local/share/Anki2/addons21/blur_text/init.py”,第 59 行,on_bridge_cmd _old(editor, command) 文件“”,第 2 行,onBridgeCmd 文件“/snap/anki-woodrow/27/lib/python3.8/site-packages/anki/hooks.py ",第 638 行,在 decorator_wrapper 返回 repl(*args, **kwargs) 文件 "/snap/anki-woodrow/27/lib/python3.8/site-packages/anki/hooks.py",第 635 行,在 repl返回 new(_old=old, *args, **kwargs) 文件“/home/element/snap/anki-woodrow/27/.local/share/Anki2/addons21/799647424/main.py”,第 183 行,在 on_bridge_cmd _old(editor, command) 文件“/snap/anki-woodrow/27/lib/python3.8/site-packages/aqt/editor.py”,第 385 行,在 onBridgeCmd (type, ord, nid, txt) = cmd .split(":", 3) ValueError: no enough values to unpack (expected 4, got 1)

标签: python-3.xanki

解决方案


问题是按钮的事件名称,我需要更改它,由于某种原因,“blur_text”用于 Anki 系统。

def contrast_text(editor: Editor) -> None:
    ...

def add_contrast_button(buttons: List[str], editor: Editor) -> List[str]:
    button = editor.addButton(ICON_PATH, "contrast", contrast_text)
    buttons.append(button)
    return buttons

addHook("setupEditorButtons", add_contrast_button)

推荐阅读