最近研究的机器学习,接触到很多科研和实用工具,其实有一款ToastFish笔者感觉比较有意思,利用Windows通知栏背单词的软件。
GitHub https://github.com/Uahh/ToastFish 上有完整的介绍,是一个很好的英语单词的学习软件。但是作为一个有点想法的工程师,笔者觉得有几点不符合笔者的需求:
1、在任务栏存在图标,作为一个有强迫症的工程师有点无法忍受;
2、不能设置调制器的出现时间周期,个性化设置不够;
3、笔者只需要单一的功能,里面的日语等外语不需要。
于是想起以前用python做的调制器,python win10toast实现时间和按键的提醒小工具以及python plyer库完成跨平台的通知器 。笔者就想着来改写一下,但是功能没有ToastFish完善,技术上没有领先,只是作为个性化的编程乐趣而已。英语数据库使用ToastFish的数据库。
整个代码如下,主要由两部分组成:
1、sqlite数据库操作部分:
sqlite3操作sqlite数据库并随机读取数据表中的数据。在最开始时笔者是使用SELECT COUNT(*)获取数据表的行数,然后random.randint(1,nums)生成数据数,最后使用where wordRank=num来随机选择数据条目,但是运行几次后发现程序提示headWord不存在,异常退出。使用Navicat Premium查看数据表发现wordRank是不连续的,随机时就存在不存在的wordRank,查询出错。
后面笔者改为sql语句中来随机选择,使用ORDER BY RANDOM() limit 1来完成随机选择数据条目,更加方面,也不存在bug。
2、toast调制器生成部分:函数time_toast调用ToastNotifier模块完成windows通知。
最终的代码如下:
脚本有了,开机启动的方法在文章python win10toast实现时间和按键的提醒小工具 中有具体的设置方法。
但是笔者遇到一个问题,想在toast上使用按钮来完成英语单词的声音播放,有道词典由这个接口usspeech_link = "http://dict.youdao.com/dictvoice?audio={}".format(usspeech) ,type0为美音,type1为英音 。但是搜索一番发现win10toast不支持按钮,但是笔者又不想不受控制的直接播放,于是就妥协了,只显示单词。
网友评论