前一阵子在看Automate the Boring Stuff with Python,读英语文章时会碰到不认识的单词,需要复制英文,查询对应的中文解释。再把英文及中文解释复制到文章的右边方便查阅,如此重复很多次,相当烦人。就想试着用python实现按住Crtl+C,然后自动在记事本中生成对应的单词和意思,省去复制黏贴的繁琐无意义劳动。先演示最终成果查词小程序
用PyQt5实现GUI界面

用CMD操作

OneNote做的笔记

程序的初步设想是利用python读取剪切板的内容(复制的英文单词),写入txt文件,然后对文件里的内容进行整理,在利用beautiful soup进行单词意思的搜索并将中英文写入文件。
首先使用cmd实现

#运行程序,复制单词,自动生成中英文对照
import pyperclip,pyautogui,msvcrt,requests, webbrowser, bs4,os,subprocess
#对重复内容进行整理
def  rearrange():playFile.close()with open('word.txt') as f:File = open('wenzi.txt','w')list = f.read().splitlines()lines=[]for i in list:if i not in lines:lines.append(i)for lines in lines:File.write(lines+"\n")File.close()playFile.close()print('Press Esc to translate.')
print('Press blank space to revise.')
#读取剪切板
str = pyperclip.paste()
#打开word.txt用于写入复制的文本
playFile = open('word.txt','a+')
i=0
while True:#每当剪切板内容发生变化的时候将单词写入word.txt#一个单词限制只写入一次#未知原因依然会出现重复内容,调用reanrrange进行整理#整理后的内容写人wenzi.txtif i==0:playFile.write(str+"\n")print(str);i=1if str!=pyperclip.paste():i=0str = pyperclip.paste()#通过键盘决定翻译或修改并跳出循环#Esc键translate,空格键reviseif msvcrt.kbhit():if ord(msvcrt.getch()) == 27:rearrange()breakif ord(msvcrt.getch()) == 32:rearrange()subprocess.call("wenzi.txt",shell=True)input("whether the wenzi.txt is correct")break#删除word.txt
os.remove("word.txt")
#打开wenzi.txt
with open('wenzi.txt') as f:#一行一行的读取内容lines = f.read().splitlines()#借助有道词典进行翻译for i in range(len(lines)):res = requests.get('https://www.youdao.com/w/eng/' + lines[i]+'/#keyfrom=dict2.index')res.raise_for_status()exampleSoup = bs4.BeautifulSoup(res.text)type(exampleSoup)elems = exampleSoup.select('#phrsListTab .trans-container ul li')#写入eco.txtplayFile = open('eco.txt','a')playFile.write(lines[i]+" : ")for elems in elems:str=elems.getText()playFile.write(str+" ")playFile.write("\n")playFile.close()#打开eco.txt
os.remove("wenzi.txt")
subprocess.call("eco.txt",shell=True)

无图形界面不适合用户使用,初步学习GUI编程使用Pyqt5实现

import sys,subprocess,os,requests, webbrowser, bs4
from PyQt5 import QtWidgets
#使用请一次性复制完所有的单词,该程序会自动记录
class MainUI():def __init__(self):self.cb = QtWidgets.QApplication.clipboard()#信号cb.dataChangeddef setupFunction(self):self.cb.dataChanged.connect(self.cb_changed)#槽lable.setText(str)def cb_changed(self):str=self.cb.text()lable.setText(str)playFile = open('word.txt','a+')playFile.write(str+"\n")playFile.close()def button1Clicked():if count==0:rearrange()subprocess.call("wenzi.txt",shell=True)def button2Clicked():       if count==0:rearrange()with open('wenzi.txt',"r+") as f:lines = f.read().splitlines()File = open('eco.txt','a')for i in range(len(lines)):res = requests.get('https://www.youdao.com/w/eng/' + lines[i]+'/#keyfrom=dict2.index')res.raise_for_status()exampleSoup = bs4.BeautifulSoup(res.text)type(exampleSoup)elems = exampleSoup.select('#phrsListTab .trans-container ul li')File.write(lines[i]+" : ")for elems in elems:str=elems.getText()File.write(str+" ")File.write("\n")File.close()f.close()with open('wenzi.txt',"r+") as F:    F.truncate()F.close()subprocess.call("eco.txt",shell=True)def  rearrange():#def使用全局变量变量需要globalglobal countcount=1#设计为一次性的搜索,故中断连接ui.cb.dataChanged.disconnect()with open('word.txt') as wj:F = open('wenzi.txt','w')list = wj.read().splitlines()lines=[]for i in list:if i not in lines:lines.append(i)for lines in lines:F.write(lines+"\n")F.close()wj.close()os.remove("word.txt")if __name__ == "__main__":#固定模板app = QtWidgets.QApplication(sys.argv)count=0#打开窗口MainWindow = QtWidgets.QMainWindow()MainWindow.resize(300,180)MainWindow.setWindowTitle("mytool")ui = MainUI()ui.setupFunction()#设置标签lable=QtWidgets.QLabel(MainWindow)lable.move(100,20)lable.setText("请连续复制单词")#若复制错单词可点击按钮进行修改btn1=QtWidgets.QPushButton(MainWindow)btn1.move(50,120)btn1.setText("revise")btn1.clicked.connect(button1Clicked)   #点击按钮进行翻译btn2=QtWidgets.QPushButton(MainWindow)btn2.move(150,120)btn2.setText("translate")btn2.clicked.connect(button2Clicked)   #固定模板MainWindow.show()sys.exit(app.exec_())

限于知识水平,代码风格不够干净简洁。最后运行虚拟环境,安装pyinstaller(导入的模块应该尽可能的少),通过pyinstaller进行打包生成exe文件。

遇到的问题

1.PyQt5的安装 link
2.vs code 配置python虚拟环境 link
创建虚拟环境(virtualenv --system-site-packages 文件夹)
进入虚拟环境( for windows)虚拟环境\Scripts\activate
退出虚拟环境 deactivate
3.在虚拟环境运行python的两条途径

  1. 点击vs code页面右上方的的三角形按钮在虚拟环境运行程序
  2. cmd进入scripts文件夹,activate即可在虚拟环境运行程序

4.PyQt5实现把剪切板内容显示在GUI上的尝试

  1. 通过sys.stdout link
  2. 试图通过QTread绕开死循环的坑 link
  3. 通过Qclipboard.dataChanged()解决 link

5.关于Qclipboard的使用 link
6.文件的读取和清空link
7.打包问题TypeError: an integer is required link
8.以(“r+” “rb+” “w” “wb” “wb+”)方式打开文件,truncate()失效,
原因在于lines = f.read().splitlines()

Reference

1.面向对象的编程,线程和进程link
2.learn python the hard way
3.Automate the Boring Stuff with Python(pyperclip,requests, webbrowser, bs4,os,subprocess模块的使用)
4.PyQt5 link
link
5.翻译 credit to 有道词典

python自动化英语查词相关推荐

  1. 使用Python调用mdx字典文件进行查词

    简介 本文只是记录一下,自己用python从mdx字典文件中批量提取单词和所需部分词义的代码. 如果你是需要自己打包制作或编辑mdx文件,可以去pdawiki论坛,那里有完整的字典制作专区,可以了解方 ...

  2. Python 翻译查词接口笔记

    Python 翻译查词接口笔记 一个学长想让我用 Python 写个翻译词的接口,调用时给一个中文或英文的词,返回前 5 个翻译,如果翻译数不足 5 就全部返回,在查找 API 时遇到了一些坑,做一些 ...

  3. 英语提升利器之沙拉查词,Anki

    学好英语对程序员的重要性不言而喻.而对于已经工作的程序员来说,专门花时间去背英语单词显然性价比不高.在日常工作的场景中,大多数程序员只要能够熟练阅读英文官方文档和技术文章就足够了.在这篇文章中,我将为 ...

  4. python用法查询软件_GitHub - ahahahahawd/youdao: 基于python 的命令行下查词工具,使用有道api...

    youdao 简介 这是一个基于Python 在控制台下查单词的小工具. 这个小程序是受https://github.com/Flowerowl/ici 启发, 用requests 库和有道的API ...

  5. 查词app android教程,英语查单词app哪个好_查单词app推荐_专门查单词的app

    核心提示:英语查单词的软件有很多,哪些英语查单词软件是我们想要的呢,下面多特小编就跟您推荐几款比较合适的软件或者app给您参考 英语查单词的软件有很多,哪些英语查单词软件是我们想要的呢,下面多特小编就 ...

  6. 【英语:基础进阶_原著扩展阅读】J2.手把手教你阅读如何查词

    1.读初级英文原版书籍的顺序 基础不是很好的同学, 可选择中英双语版本的书籍. 顺序: 先读英文再读中文, 最后再回到英文版本. 原因: 如果说你先读了中文再读英文的话, 大脑会省去了一个思考理解以及 ...

  7. 【工具】Vscode翻译插件推荐(不用谷歌翻译api、支持短句英汉互译、支持查词、支持自动补全、不需要浏览器)

    需求: 1)偶尔需要查英文生词: 2)有时候想不起来中文对应的英文: 3)不想回到浏览器打开一堆网页: 4)谷歌翻译挂了. 偶尔需要的需求: 1)短句翻译. 因为谷歌翻译挂了,首先,排除最热门的翻译插 ...

  8. Python自动化运维---学习笔记

    Python自动化运维 python简介 入门容易精通难,python适合作为第二编程语言(对于运维:Shell,对于开发:Java,对于全栈:nodejs(javascript)) python官网 ...

  9. 罗永浩力荐,丁磊豪送的学习神器:手机查词真不如这支AI词典笔?

    销量确实称得上火爆.尽管999元的直播优惠价价格并不低,但这支有道词典笔专业版在快手直播间还是经历了返场,最终20000多台一抢而空. 为这款产品站台的正是网易CEO丁磊,6月11日是他网上卖货的首秀 ...

  10. python自动化办公入门书籍推荐-用python进行办公自动化都需要学习什么知识呢?...

    自动化办公无非是excel.ppt.word.邮件.文件处理.数据分析处理.爬虫这些.我来一一介绍如何学习,找资料! 最近做了个Python办公自动化的Live讲座,不要脸的推一波~ python基础 ...

最新文章

  1. php ajax替换数据,如何用ajax替换php函数
  2. ubuntu 14.04
  3. Git无法检测到文件名大小写的更改
  4. python 财务报表审计_python 自动化审计
  5. Win10开发UWP使用.Net Native编译时遇到的一些问题。
  6. Multiple Dispatch
  7. navicat连接linux远程数据库,使用Navicat forMySql远程连接Linux 系统上的数据库
  8. 树莓派安装CentOS
  9. java中Arrays类和Math类常用API简介
  10. mysql索引缓存的内容_mysql服务器变量、缓存及索引
  11. 什么样性格的人最有可能成为领导者?
  12. html做偶像图片2048小游戏,一个自制的2048小游戏(一)
  13. matlab分析电梯,一种基于Matlab/Simulink的电梯驱动系统建模方法
  14. 技术文化和惨淡命运 —— 怀念中国雅虎
  15. ssl登录服务器未响应是什么意思,工行的网上银行在确认转账时网页总是未响应...
  16. 【图像超分辨率】Deep Learning for Image Super-resolution: A Survey
  17. 郭敏:什么是交通事件?如何做好交通事件管理以降低二次事故发生概率?
  18. 厦门大学马来西亚分校打造更美好的智慧校园
  19. 假如工资有段位,你是个啥?
  20. ppt文件太大如何压缩变小?

热门文章

  1. RT-Thread : STM32 系列外设驱动添加指南
  2. Python小白的数学建模课-20.网络流优化案例
  3. Gradle的神奇之处
  4. 解决master[remote rejected] pre-receive hook declined
  5. 看了这个教程,学会快速找出三等分点
  6. Vue2在使用Element-UI的分页组件遇到的问题(如PageSize,PageNum等)
  7. 软件测试自动化面试题(含答案)
  8. 安卓设备投影到电脑PC端的简单实现
  9. 起点中文网乘“盛大”之势打通产业供应链
  10. 秃头程序员保姆教程:Spring框架自学之路(一)