Anki 插件开发:创建编辑器按钮时出错

问题描述

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

成功了!

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

我需要做什么?
我尝试实现onBridgeCmd,但是没有用(不知道怎么实现)。

enter image description here

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, 模糊文本,search_in_dictionaries

捕获异常:回溯(最近一次调用最后一次):文件 "/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) File "",line 2,in onBridgeCmd File "/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 return new(_old=old,*args,**kwargs) 文件“/home/element/snap/anki-woodrow/27/.local/share/Anki2/addons21/search_in_dictionaries/init.py ”, 第 230 行,在 on_bridge_cmd 中 _old(editor,command) File "",**kwargs) 文件“/home/element/snap/anki-woodrow/27/.local/share/Anki2/addons21/blur_text/init.py ”, 第 59 行,在 on_bridge_cmd 中 _old(editor,**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: 没有足够的值来解包(预期 4,得到 1)

解决方法

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

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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...