Anki开发入门:5分钟打造第一个插件


Anki是用Python写的,插件也是用Python开发的。下面从零开始创建一个最简单的 Hello World插件


一、环境准备

1.1 安装Anki

下载并安装最新版Anki:官网下载地址

1.2 准备代码编辑器

就是写代码的地方,推荐 VS CodePyCharm

1.3 找到Anki插件目录

在Anki菜单中点击工具 > 插件 > 查看文件,可打开插件目录:
C:\Users\用户名\AppData\Roaming\Anki2\addons


二、创建插件文件夹

2.1. 新建插件文件夹

在插件目录(addons)中创建一个新文件夹,命名为 hello_world_addon

2.2 创建插件文件

hello_world_addon 文件夹中新建两个文件:

  • __init__.py:插件主代码文件。文件命名必须为 __init__.py(注意是双下划线)。
  • meta.json:插件元数据文件

三、编写代码

3.1 meta.json 文件

此文件用于声明插件名称、版本、兼容性等信息。

{
    "name": "Hello World Addon",
    "package": "hello_world_addon",
    "author": "Your Name",
    "version": "1.0",
    "homepage": "https://your-website.com",
    "conflicts": [],
    "target": "anki-21.0+"
}

3.2 __init__.py 文件

3.2.1 代码

代码分为 模块导入功能定义界面交互 三部分。

# 导入Anki核心模块
from aqt import mw
from aqt.utils import showInfo
from aqt.qt import QAction

# 定义插件的功能函数
def show_hello_world():
    showInfo("Hello World! 这是你的第一个Anki插件!")

# 创建菜单项并绑定功能
action = QAction("Hello World", mw)          # 创建菜单项
action.triggered.connect(show_hello_world)   # 绑定点击事件
mw.form.menuTools.addAction(action)          # 添加到菜单栏

3.2.1 代码解释

(1)模块导入

模块/类作用
aqtAnki 的 QT 界面框架(Anki QT Toolkit),用于操作界面元素
mw主窗口对象(Main Window),代表 Anki 的整个界面
showInfoAnki 内置函数,用于弹出信息提示框
aqt.qt.QActionQT 框架中的动作类,用于创建菜单项、按钮等可交互元素

(2)功能定义
showInfo 弹窗显示消息,参数为显示消息内容。

(3)界面交互

  • action = QAction("Hello World", mw):创建菜单项

    • 功能:创建一个名为 “Hello World” 的菜单项,父对象为 Anki 主窗口 (mw)。
    • 参数
      • 第1个参数:菜单项显示文本。
      • 第2个参数:父窗口对象,确保菜单项生命周期由 Anki 管理。
  • action.triggered.connect(show_hello_world):连接函数

    • 功能:将菜单项的 触发信号triggered)连接到自定义函数 show_hello_world,即点击菜单,执行函数。
    • 信号机制:QT 框架通过信号(Signal)和槽(Slot)实现事件驱动,此处点击菜单会触发 show_hello_world 执行。
  • mw.form.menuTools.addAction(action):定义位置

    • 功能:将菜单项添加到 Anki 主窗口的 Tools(工具)菜单 中。
    • 路径依赖
      • mw.form 是 Anki 主窗口的 UI 组件容器。
      • menuTools 对应顶部菜单栏的 “Tools” 菜单。
      • addAction 是 QT 方法,用于添加菜单项。

四、安装并测试插件

  1. 重启Anki
    • 关闭并重新打开Anki,使插件生效。

  2. 验证插件是否加载
    • 打开Anki,点击菜单栏的 Tools(工具),如果看到新增的 Hello World 按钮,则插件加载成功。

  3. 测试功能
    • 点击 Tools > Hello World,应弹出提示框显示预设信息。


五、调试与排错

Ctrl+Shift+;打开Anki控制台,可查看Python错误信息,例如:

SyntaxError: invalid syntax

六、扩展功能

6.1 添加多个菜单项

# 新增第二个按钮
action2 = QAction("另一个功能", mw)
action2.triggered.connect(lambda: showInfo("这是第二个功能!"))
mw.form.menuTools.addAction(action2)

6.2 修改菜单项位置

若想将菜单项添加到其他菜单(如 “Edit” 菜单),可修改代码:

mw.form.menuEdit.addAction(action)  # 添加到 "Edit" 菜单

6.3 自定义快捷键

为菜单项绑定快捷键,可将下面的代码添加到创建 action 的代码后。

action.setShortcut("Ctrl+H")  # 绑定快捷键 Ctrl+H

七、后续学习

  1. 学习PyQt5界面开发:添加配置窗口、输入框、按钮等组件。
  2. 操作Anki卡片数据:尝试读取/修改当前选中的卡片内容。
  3. 参考官方文档Anki插件开发文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金创想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值