尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Anki 插件如何用 aqt 添加一个显示卡片数量的菜单项?
Anki 插件如何用 aqt 添加一个显示卡片数量的菜单项【免费下载链接】ankiAnki is a smart spaced repetition flashcard program项目地址: https://gitcode.com/GitHub_Trending/an/anki这篇文章解决一个具体的插件开发任务给 Anki 写一个最小插件通过aqt在工具菜单里添加一个菜单项点击后弹出对话框显示当前牌组collection中的卡片总数。以下内容基于 Anki 仓库中官方插件文档的示例代码适用于在本地开发环境中编写并测试插件的场景。准备工作定位插件目录Anki 的插件是 Python 模块Anki 启动时自动加载见 插件概述。插件文件放在顶层插件目录中每个插件占用一个文件夹Anki 会查找文件夹内的__init__.py文件例如addons21/myaddon/__init__.py目录说明与操作路径见 插件目录在 Anki 主窗口中打开工具 Add-ons菜单点击View Files按钮即可弹出顶层插件目录。如果没有安装过插件弹出的就是顶层目录如果选中了某个插件弹出的是该插件的模块目录需要上一级。插件目录名为addons21对应 Anki 2.1。如果你看到名为addons的目录说明之前用过 Anki 2.0.x。文件夹内没有__init__.py时Anki 会忽略该文件夹。自建插件的文件夹名建议只使用 a-z 和 0-9 字符避免 Python 模块系统出问题。可选分支如果你习惯用 IDE 开发可以在 PyCharm 中新建 Python 项目并创建名为myaddon的包然后在 Python Console 中安装aqt以获得类型补全见 编辑器配置。前提是 Anki 2.1.24 及以上版本且必须使用 64 位 Python、Python 版本要与你获取的 Anki 版本所支持的版本一致import subprocess subprocess.check_call([pip3, install, --upgrade, pip]) subprocess.check_call([pip3, install, mypy, aqt[qt6]])安装后在文件中输入from anki import hooks再敲hooks.出现补全列表即为成功。注意插件不能直接在 PyCharm 里运行会得到错误插件必须在 Anki 内运行。编写插件代码在插件目录中创建addons21/myaddon/__init__.py加入 官方基础插件示例中的完整代码# import the main window object (mw) from aqt from aqt import mw # import the show info tool from utils.py from aqt.utils import showInfo, qconnect # import all of the Qt GUI library from aqt.qt import * # Were going to add a menu item below. First we want to create a function to # be called when the menu item is activated. def testFunction() - None: # get the number of cards in the current collection, which is stored in # the main window cardCount mw.col.card_count() # show a message box showInfo(Card count: %d % cardCount) # create a new menu item, test action QAction(test, mw) # set it to call testFunction when its clicked qconnect(action.triggered, testFunction) # and add it to the tools menu mw.form.menuTools.addAction(action)各部分作用from aqt import mw导入 Anki 主窗口对象mw.col即当前牌组。testFunction通过mw.col.card_count()获取卡片数量再用aqt.utils的showInfo弹出消息框。QAction(test, mw)创建名为 test 的菜单项qconnect(action.triggered, testFunction)绑定点击回调mw.form.menuTools.addAction(action)把它挂到工具菜单。部署并验证插件写完后的加载方式见 插件目录在 IDE 中开发时把myaddon文件夹整体复制进 Anki 的插件目录或者在 Mac / Linux 上从开发目录向插件目录创建符号链接。重启 Anki。成功条件重启后工具菜单中应出现一个test菜单项点击它会弹出显示卡片数量的对话框。这是该示例文档明确给出的验证方式。出错时如何定位启动时报错如果插件代码有错Anki 启动时会弹出错误消息并指出问题所在的位置按提示修好代码再重启即可。调试输出Anki 是 GUI 程序print()的内容默认不可见。开发插件时建议显示控制台输出见 控制台输出Windows通过C:\Users\user\AppData\Local\Programs\Anki或C:\Program Files\Anki下的anki-console.bat启动 Anki会多出一个控制台窗口。macOS打开 Terminal.app运行/Applications/Anki.app/Contents/MacOS/anki。Linux在终端中运行anki。另外要注意打印到 stderr 的内容会被 Anki 的异常处理器捕获并以弹窗形式呈现给用户开发时不要往 stderr 随意输出。交互式排查Anki 自带 REPLDebug Console在程序内按对应快捷键打开窗口输入表达式后按 CtrlReturnmacOS 为 CommandReturn执行例如输入mw查看主窗口对象详见 调试。限制与下一步插件不能脱离 Anki 独立运行包括在 PyCharm 中直接启动这是文档明确的限制。本例只涉及aqt与标准库不依赖任何 PyPI 第三方包因此不需要打包模块。如果插件用到未内置的标准模块或 PyPI 包则需要在插件内自行捆绑见 Python 模块。获取卡片数量的另一种写法是直接查询数据库anki 模块文档中给出了示例showInfo(card count: %d % mw.col.db.scalar(select count() from cards))。文档同时提醒直接写数据库容易出问题应优先使用col上的方法。完成这个最小插件后可以继续阅读 hooks 与 filters、插件配置 等文档扩展插件的事件响应和配置能力。【免费下载链接】ankiAnki is a smart spaced repetition flashcard program项目地址: https://gitcode.com/GitHub_Trending/an/anki创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

STM32进阶必看:HAL库依赖、硬件细节与调试方法的三大深坑

STM32进阶必看:HAL库依赖、硬件细节与调试方法的三大深坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/12 4:22:22
使用 Kubernetes Monitoring Helm Chart 与 Loki 采集 Kubernetes 日志的完整实战指南

使用 Kubernetes Monitoring Helm Chart 与 Loki 采集 Kubernetes 日志的完整实战指南

使用 Kubernetes Monitoring Helm Chart 与 Loki 采集 Kubernetes 日志的完整实战指南 【免费下载链接】loki Like Prometheus, but for logs. 项目地址: https://gitcode.com/GitHub_Trending/lok/loki Loki 最典型的落地场景之一,就是从 Kubernetes 集群中…

📅 2026/9/12 4:22:22
5 分钟跑起 Mealie:自托管食谱管理与餐单规划完整教程

5 分钟跑起 Mealie:自托管食谱管理与餐单规划完整教程

5 分钟跑起 Mealie:自托管食谱管理与餐单规划完整教程 【免费下载链接】mealie Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whol…

📅 2026/9/12 4:22:22
MORE NEWS

更多资讯

📰

教学作业量智能调配系统设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

MCP协议适用性指南:何时该用、何时该弃

1. 先说结论:MCP不是万能胶,而是特定场景下的精密螺丝“我们什么时候不需要MCP?”——这个问题本身就很反直觉。最近三个月,我在三个不同行业的Agent项目里反复被问到这句话:一个做金融风控的团队在深夜 Slack 频道里发…

📰

风电智能测温系统:原理、架构与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

如何配置 DeepSpeed Ulysses-Offload FPDT 训练 256K 长上下文 GPT?

如何配置 DeepSpeed Ulysses-Offload FPDT 训练 256K 长上下文 GPT? 【免费下载链接】DeepSpeed DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective. 项目地址: https://gitcode…

📰

Docker Minecraft Server 卡顿了?内存、GC、网络三步定位并压掉性能瓶颈

Docker Minecraft Server 卡顿了?内存、GC、网络三步定位并压掉性能瓶颈 【免费下载链接】docker-minecraft-server Docker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and mo…

📰

解决Android Studio中jlink错误的全方位指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬