建外文网站,网站黑链,自己做微网站制作教程,深圳兆富资本非吸案4人被判刑在Anki的笔记浏览器窗口中#xff0c;作为主体部分的表格在对获取到的笔记进行排序时#xff0c;最多只能有一个排序字段#xff0c;在设定笔记的排序字段后#xff0c;没法将表格中的笔记按其他字段进行排序。要满足这个需求#xff0c;可以使用Advanced Browser插件作为主体部分的表格在对获取到的笔记进行排序时最多只能有一个排序字段在设定笔记的排序字段后没法将表格中的笔记按其他字段进行排序。要满足这个需求可以使用Advanced Browser插件安装ID874215009。这个插件在浏览器窗口的右键文菜单中添加了额外的菜单项从而支持在浏览器窗口的表格控件上添加以笔记中非排序字段作为列标题的列如下图 在使用这个插件的时候发现它没有提供在表格控件中增加一个序号列并填充序号的功能。作为一个强迫症患者实在想增加这个列于是对这个插件进行了一番改造。
必须说有关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(typeCount,name序号,onDatacCout)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插件编程有了个大致了解了暂时就这样了。