这里有新鲜出炉的 Python 入门,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要为大家详细介绍了 Python 实现单词翻译功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在进行英文文献阅读时,经常会出现一些不认识的单词,但对于一些 pdf 阅读器,比如 Foxit 阅读器使用翻译功能需要点击 (Extra->Translate),并且启用了翻译功能将不能使用注释功能,这对于阅读者来说将是极不方便的。所以为了方便查询单词,自己开发了个 Windows 环境下的 Python 程序用于监控并查询单词,而只需的操作就是选中单词并按 Ctrl+C 即可。
该 Python 程序主要分为三部分:从另外一个应用程序中获取需要查询的单词,单词翻译和单词显示。
从另外一个应用程序中获取需要查询的单词涉及到进程间通信,在 Windows 上最简单的方法是使用 Clipboard 功能。Python 中有多种方式可以使用剪切板,比如使用 win32clipboard(Python 使用剪切板的方法)。这里使用的是 Qt 实现的 clipboard,Qt 的剪切板实现支持当系统剪切板内容发生改变时回调。具体实现:
- # 获取Qt的剪切板并绑定回调函数
- self.clipboard = QApplication.clipboard()
- self.clipboard.dataChanged.connect(self.on_clipboard_changed)
- # 回调函数
- def on_clipboard_changed(self):
- data = self.clipboard.mimeData()
- if data.hasText():
- word = data.text().strip()
- m = re.match(r'[a-zA-Z]+', word)
- if m:
- self.setWord(word)
- #self.setWindowFlags(self.windowFlags() & QtCore.Qt.WindowStaysOnTopHint)
- #self.setWindowState(self.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
- trans = queryWords(word)
- self.setTrans(trans)
- ''' tip the window content has changed, but cannot move the window to the forground'''
- self.activateWindow()
- else:
- print(word)
单词翻译直接调用有道单词翻译,单词翻译的链接格式为 http://dict.youdao.com/w/{}/,其中 {} 为需要查询的单词。获取的将是单个网页,使用 BeautifulSoup 提取最终的翻译结果。
- def queryWords(word):
- ''' 利用有道翻译查询单词 '''
- url = 'http://dict.youdao.com/w/{}/'.format(word)
- html = getURL(url)
- soup = BeautifulSoup(html.text, 'html.parser')
- trans_container = soup.find(class_='trans-container')
- if not trans_container:
- ''' not found the translation '''
- return [word]
- trans_li = trans_container.find_all('li')
- trans_data = [li.text.strip() for li in trans_li]
- return trans_data
最后显示是通过 Qt 编写的界面,原本是想查询到单词后,界面窗口自动激活并移动到最前端,但 Windows 不允许未经用户操作而将窗口移动到最前端,所以最后只是通过激活窗口提示用户。
完整的代码位于 https://github.com/llf2017/pyDict/blob/master/pyDict.py
来源: http://www.phperz.com/article/17/0701/336419.html