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

2024-06-18 07:53

本文主要是介绍介绍并改造一个作用于Anki笔记浏览器的插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在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插件编程有了个大致了解了,暂时就这样了。

这篇关于介绍并改造一个作用于Anki笔记浏览器的插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071711

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作