介绍并改造一个作用于Anki笔记浏览器的插件

server/2024/9/25 13:19:51/

在Anki的笔记浏览器窗口中,作为主体部分的表格在对获取到的笔记进行排序时,最多只能有一个排序字段,在设定笔记的排序字段后,没法将表格中的笔记按其他字段进行排序。要满足这个需求,可以使用Advanced Browser插件(安装ID:874215009)。这个插件在浏览器窗口的右键文菜单中添加了额外的菜单项,从而支持在浏览器窗口的表格控件上添加以笔记中非排序字段作为列标题的列,如下图:

在使用这个插件的时候,发现它没有提供在表格控件中增加一个序号列并填充序号的功能。作为一个强迫症患者,实在想增加这个列,于是对这个插件进行了一番改造。

必须说有关Anki插件开发的文档实在太少了,自己写插件找Anki中相关对象的文档都要费很多时间还不一定能找到,我甚至求助AI,结果被忽悠了一轮,它煞有介事给出的回答完全没用——所以AI取代程序员的可能暂时应该不大。因此,稍微分析下这个插件的代码并进行改造未尝不是探索Anki插件编程的一个好方法。要说明的是,我对这个插件改造后增加的功能实际上没有什么作用,因为表格控件中有多少条笔记以及选择了多少条笔记在窗口标题处都有了,我添加的这个序号并不是笔记模型中的字段,所以意义不大,而且改造后其实动作也不完全符合我的预期,只有等以后有时间了再深入探索,这里权且算个阶段性笔记

Advanced Browser插件添加的子菜单组“-Advanced-”添加了一序列菜单项,每个菜单项可以在表格控件中添加一列。因此,很容易想到改写这个文件的源码来添加自己的“序号”菜单项。要让它生成序号,需要在表格控件显示数据时从1开始计数并显示在笔记所在行。所以,需要保存一个变量用于保存当前的计数。此外,这个计数在表格控件中的笔记条目发生变化时还应该恢复到初始值,这就需要挂一个处理表格控件中显示条目变化的钩子。以下就是我对插件源文件所增添的内容:

    # 给类添加构造函数,保存一个用于计数的变量,放在类AdvancedFields中def __init__(self):self.sn = 0# 参照源文件中其他菜单项的写法,增加一个序号菜单项,放在类AdvancedFields中# Sequential numberdef cCout(c, n, t):self.sn += 1return self.sncc = advBrowser.newCustomColumn(type='Count',name='序号',onData=cCout)self.customColumns.append(cc)# ------------------------------- ## 增加一个回复计数变量的钩子函数,放在类AdvancedFields中def initSn(self, browser):self.sn = 0# 最后,增加一个钩子。当然,要先在导入包的地方加上from aqt import gui_hooks# 添加在原文件最后gui_hooks.browser_did_search.append(af.initSn)

从最上面的截图可以看到确实添加了一个序号列。但是这个没有排序功能,里面的序号数字经常乱掉,乱掉后只有在光标定位在表格控件第一行且重新筛选笔记时才会重新从1往下顺序排列。这应该是没有钩全引起表格控件重新显示的钩子。不过用半天时间也算对Anki插件编程有了个大致了解了,暂时就这样了。


http://www.ppmy.cn/server/49361.html

相关文章

C#语言入门详解 --- 方法(含传值 输出 引用 数组)

方法 方法标准式 <Access Specifier> <Return Type> <Method Name>(Parameter List) { Method Body } 让我们逐一对每一个模块进行解释&#xff1a; Access Specifier&#xff1a;访问修饰符&#xff0c;这决定了接下来的主题的可见性&#xff0c;包含p…

ROS 机器人运动控制(C++实现)

ROS 机器人运动控制&#xff08;C实现&#xff09; 实现思路 构建一个新的软件包&#xff0c;报名叫做vel_pkg在软件包中新建一个节点&#xff0c;节点名叫做vel_node在节点中&#xff0c;向ROS大管家NodeHandle申请发布话题/cmd_vel&#xff0c;并拿到发布对象vel_pub构建一…

【ElasticSearch】windows server 2019安装ES8.9.1 + kibana8.9.1 + IK分词器

目录 准备工作 ES Kibana IK 安装 es es访问测试 将es安装为系统服务 Kibana 配置es 运行kibana 访问测试 IK 补充 准备工作 ES8.9.1 kibana8.9.1 IK的版本最好要对应上&#xff01;&#xff01;&#xff01; ES es8.9.1&#xff1a; https://artifa…

DeepSORT(目标跟踪算法)中 可以设置阈值进行异常检测或目标跟踪的原因

DeepSORT&#xff08;目标跟踪算法&#xff09;中 可以设置阈值进行异常检测或目标跟踪的原因 flyfish 代码地址 https://github.com/shaoshengsong/DeepSORT 利用卡方分布的特性来设置合理的阈值进行异常检测或目标跟踪。 设定和定义 假设我们有一个 k k k 维的随机向量…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA与朋友们的石头剪刀布游戏(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍓OJ题目截图 📎在线评测链接 LYA与朋友们的石头剪刀布游戏(100分) 🌍 评…

【C/C++】用C语言写一个数据仓库,存储和修改数据

这个代码实现了一个简单的数据仓库&#xff0c;其中数据被存储在一个3x3的二维数组中。用户可以通过控制台界面与这个数据仓库进行交互&#xff0c;可以选择查看数据或者修改数据。 基础版源码&#xff1a; #include <stdio.h>#define HOUSESIZE 3 int arr[HOUSESIZE][…

前端实现获取后端返回的文件流并下载

前端实现获取后端返回的文件流并下载 方法一&#xff1a;使用Axios实现文件流下载优点缺点 方法二&#xff1a;使用封装的Request工具实现文件流下载优点缺点 方法三&#xff1a;直接通过URL跳转下载优点缺点 结论 在前端开发中&#xff0c;有时需要从后端获取文件流&#xff0…

毕业了校园卡怎么改套餐?

毕业了校园卡怎么改套餐&#xff1f; 毕业生校园卡99元套餐变更8元保号套餐教程 学弟学妹们恭喜毕业呀&#x1f393; 校园卡绑定了好多东西注销不掉又不想交高额月租的看过来。 今天一招教你更改校园卡套餐。 中国移动/电信/联通App 打开App&#xff0c;在首页右上角点击人工…