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

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

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

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

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

    # 给类添加构造函数,保存一个用于计数的变量,放在类AdvancedFields中
    def __init__(self):
        self.sn = 0


    # 参照源文件中其他菜单项的写法,增加一个序号菜单项,放在类AdvancedFields中
    # Sequential number
    def cCout(c, n, t):
        self.sn += 1
        return self.sn

    cc = 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.mfbz.cn/a/718328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring框架(SSM)

Spring Framework系统架构 Spring框架是一个开源的企业级Java应用程序框架,它为开发Java应用程序提供了一个全方位的解决方案。Spring的核心优势在于它的分层架构,这使得开发者可以灵活选择使用哪些模块而无需引入不需要的依赖。下面是Spring框架的一些关…

Linux 下VS Code 弹出 快速修复,导致 BackSpace 无法删除

最近在Linux下使用VSCode,发现有错误的代码选中了无法删除 这个时候,你按BackSpace 是无法删除的,很恼火! 把这些禁用了之后,就不会弹出这个框,这样可以顺利选中删除! 感觉这个是不是vs code 插…

刷题笔记2:用位运算找“只出现一次的一个数”

1. & 和 | 的基本操作 137. 只出现一次的数字 II - 力扣(LeetCode) 先对位运算的操作进行复习: 1、>> 右移操作符 移位规则:⾸先右移运算分两种: 1. 逻辑右移:左边⽤0填充,右边丢…

高考没考好焦虑怎么选计算机专业!一篇告诉你,推荐三个风口专业!想学计算机怎么选大学专业

高考成绩揭晓,几家欢喜几家愁。对于那些未能如愿考取理想分数的同学来说,未来似乎蒙上了一层阴影。尤其是在计算机专业如此热门的今天,低分考生是否还有机会在这个领域找到一席之地?本文将为你揭秘,即使高考成绩不理想…

sheng的学习笔记-AI-集成学习(adaboost,bagging,随机森林)

ai目录:sheng的学习笔记-AI目录-CSDN博客 目录​​​​​​​ 集成学习 什么是集成学习 集成学习一般结构: 示意图 弱学习器 经典算法 Boosting 什么是boosting 方法图 AdaBoost 算法 AdaBoost示意图 流程解析: 错误分类率error…

【5.x】ELK日志分析、集群部署

ELK日志分析 一、ELK概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。 一个完整的集中式日志系统,需要包含以下几个主…

白酒:茅台镇白酒的消费者教育计划与推广活动

云仓酒庄豪迈白酒,作为茅台镇的品牌,一直以来都非常重视消费者教育和推广活动。这些计划和活动的目的在于提高消费者对豪迈白酒的认知度和接受度,同时培养消费者的品鉴能力和酒文化素养。 首先,云仓酒庄豪迈白酒通过开展品鉴活动来…

机器学习二分类数据集预处理全流程实战讲解

本文概述 本文对weatherAUS数据集进行缺失值分析并剔除高缺失特征,合理填补剩余缺失值,利用相关性筛选关键特征,采用多种机器学习模型(如逻辑回归、随机森林等)在80%训练集上训练,并在20%测试集上预测明日降…

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上,测评已成为一种高效的推广手段,但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制,它涵盖了多个方面,以确保评价的真实性和合规性。 首先,硬件参数…

Nuxt快速学习开发---Nuxt3视图Views

Views Nuxt提供了几个组件层来实现应用程序的用户界面 默认情况下&#xff0c;Nuxt 会将app.vue文件视为入口点并为应用程序的每个路由呈现其内容 应用程序.vue <template> <div> <h1>Welcome to the homepage</h1> </div> </template> …

openh264 帧间预测编码过程源码分析

openh264 OpenH264 是一个开源的 H.264 编码和解码器&#xff0c;由思科系统开发并维护。它专为实时应用程序如 WebRTC 设计&#xff0c;提供了从基础到高级特性的广泛支持。OpenH264 的编码器支持从 Constrained Baseline Profile 到 5.2 级别&#xff0c;允许任意分辨率的编…

基于51单片机的音乐彩灯设计

基于51单片机的音乐彩灯设计 &#xff08;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 由STC单片机ADC0809模块LM386功放模块喇叭音频接口发光二极管电源构成 1.通过音频线输入可以播放电脑、手机、MP3里面的音乐。 2.AD对音频…

Java 桥接模式(Bridge Pattern)是设计模式中的一种结构型设计模式,桥接模式的核心思想是将抽象与实现解耦

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。桥接模式的核心思想是将抽象与实现解耦&#xff0c;使得它们可以独立扩展。 在桥接模式中&#xff0c;通常包含以下四个…

揭秘:边缘智能网关P1600在智慧灯杆上的应用

智慧灯杆作为智慧城市建设的重要组成部分&#xff0c;集成了照明、通信、安防、环境监测等多重功能&#xff0c;是实现城市智能化的关键载体。边缘智能网关P1600在这一系统中扮演着至关重要的角色&#xff0c;它不仅连接和管理各种传感器和设备&#xff0c;还负责数据的采集、处…

保护密码安全,探讨密码加盐及其在Go语言中的实现

介绍 在当今数字化时代&#xff0c;个人隐私和数据安全成为了人们关注的焦点之一。随着网络犯罪的不断增加&#xff0c;用户的密码安全性变得尤为重要。密码加盐作为一种常见的安全措施&#xff0c;被广泛应用于密码存储和认证系统中。本文将深入探讨密码加盐的概念、重要性以…

Ubuntu网络管理命令:ifconfig

安装Ubuntu桌面系统&#xff08;虚拟机&#xff09;_虚拟机安装ubuntu桌面版-CSDN博客 关于ifconfig命令&#xff0c;在11.1节已经介绍过了。通过该命令可以查看和配置网络接口。ifconfig是一个比较古老的命令&#xff0c;在Ubuntu 22以及其他的许多发行版中&#xff0c;已经不…

多种传感器在钢铁工业安全风险监测预警中的应用

中国作为钢铁行业的生产与消费大国&#xff0c;其钢铁冶炼流程的复杂性和长周期性使得各环节中频繁出现的有毒有害、易燃易爆气体以及粉尘等危险物质成为行业安全管理的重大挑战。为了保障工作人员的安全&#xff0c;多种传感器在安全风险监测预警中的应用显得尤为重要。 钢铁产…

地表位移监测系统:原理、组成与功能

地表位移监测系统是一项用于实时监测地表下沉、沉降、地面位移和地下水位变化的关键工具。本文将介绍该系统的工作原理、系统组成、工作模式以及功能特点&#xff0c;以便更深入地了解如何有效利用该系统进行沉降监测。 一、工作原理 地表位移监测系统主要由位移监测站、数据采…

华宽通成功中标岳麓山大学科技城管理委员会投资环境推介可视化平台

湖南华宽通科技股份有限公司成功中标岳麓山大学科技城管理委员会投资环境推介可视化平台项目。该平台将整合区域经济数据、产业布局、创新能力等关键信息&#xff0c;通过智能分析工具&#xff0c;为投资者提供定制化的投资建议和实时更新的动态信息。通过该平台&#xff0c;岳…

C语言王国——数组的旋转(轮转数组)三种解法

目录 一、题目 二、分析 2.1 暴力求解法 2.2 找规律 2.3 追求时间效率&#xff0c;以空间换时间 三、结论 一、题目 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出…