利用Python通过获取剪切板数据实现百度划词搜索功能
本文介绍如何使用Python获取系统剪切板内容,并通过PyQt5库自动调用浏览器打开百度搜索结果页。文章详细讲解了环境配置、模块安装、核心代码编写及运行过程中遇到的常见错误与解决思路,旨在提供一种简单的划词搜索辅助方案。
一、实现划词功能
所谓的划词翻译,其核心逻辑并非直接识别屏幕上的文字,而是通过监听并获取用户操作剪切板的内容,进而执行一系列后续处理动作。因此,第一步需要编写程序来准确获取剪切板中的文本数据。

首先,在电脑桌面上新建一个文件夹,并将其命名为“MoveSearch”,用于存放项目相关文件。

进入该文件夹后,创建两个主要的Python脚本文件,分别命名为“MainWindow.py”和“Clipborad.py”,用于后续的功能开发。

此处以Sublime Text编辑器为例进行演示。打开“ClipBoard.py”文件后,需按照图示步骤将当前文件夹添加至工作路径中,以便编辑器正确识别文件。


当界面显示该文件夹已被成功加入开发路径时,表示环境配置已完成,可以开始编写代码。
接下来,我们需要在PyPi仓库中搜索并下载所需的第三方模块。经过检索,发现有一个模块完全符合获取剪切板数据的需求,因此将其下载并安装。

在命令行中输入命令pip install pyperclip即可执行安装操作。以下是在CMD终端中尝试安装该库的具体代码示例。

如图所示,代码已成功安装。随后,我们可以测试该库的基本功能:构建一个无限循环,持续读取并返回剪切板中的最新数据。
import pyperclip as pc
import time
while True:
copy_text = pc.paste()
print(copy_text)
time.sleep(1)
具体实现时,首先导入相关模块,然后建立循环结构。在循环内部,我们模拟键盘输入或获取剪切板内容,并打印输出结果。为了避免程序长时间运行占用过多系统内存,引入Time模块使程序每隔一定时间休眠一次,从而实现资源的合理分配。

通过上述程序运行结果可见,程序能够成功将剪切板中的值读取并返回。
鉴于获取剪切板内容的代码逻辑较为简单,我们可以将重心转移回主程序“MainWindow.py”的开发中。

接下来需要编写一个功能,用于在外部浏览器中打开网页。实现方式有多种选择,这里选用大众较为熟悉的PyQt5库进行操作。此外,QT近期也推出了新的Python接口,有兴趣的开发者可以尝试修改代码进行探索。
首先,导入程序运行所必需的基础模块。

随后,定义一个类来处理窗口相关的逻辑与状态。

在类初始化中,首先设置窗口的标题,接着设定窗口出现时的初始坐标位置及窗口尺寸。最后,利用浏览器组件实例化该窗口。此时暂不指定具体的访问链接,因为百度搜索引擎的具体参数规则尚不明确。

通过在浏览器中手动使用百度搜索,观察地址栏URL的变化规律,可以发现“wd”参数用于接收搜索关键词。

根据观察到的规律,将代码中的URL拼接部分修改为'https://www.baidu.com/s?ie=UTF-8&wd='+str(word)的形式。
整合上述逻辑后,完整的代码结构如下所示。接下来,需要在主循环中调用该窗口类。

将获取到的剪切板内容作为参数传入窗口类中,先运行程序进行测试。

测试结果显示,当剪切板中存在文本内容时,程序能够成功打开对应的网页。
import pyperclip as pc
import time
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
class MainWindow(QMainWindow):
def __init__(self,word):
super(QMainWindow,self).__init__()
self.setWindowTitle("百度划词搜索")
self.setGeometry(700,600,1200,1200)
self.browser = QWebEngineView()
self.browser.load(QUrl('https://www.baidu.com/s?ie=UTF-8&wd='+str(word)))
self.setCentralWidget(self.browser)
# 首先我们先创建一个循环
while True:
# 获取系统粘贴板的值
copy_text = pc.paste()
# 准备打开网站
app = QApplication(sys.argv)
win = MainWindow(copy_text)
win.show()
app.exec()
time.sleep(5)
二、运行错误
在实际运行过程中,可能会遇到多个报错信息,需要逐一排查。
首先遇到的问题是窗口类创建失败,导致程序无法正常初始化界面。
在进行第二次复制操作时,会触发特定的报错信息,具体错误提示为QWidget: Must construct a QApplication before a QWidget。

其次,程序运行后可能导致浏览器窗口无法正常响应或关闭,影响后续操作。

三、解决问题
针对上述问题,笔者近期重新梳理了整体思路,发现原有的部分处理方式存在缺陷。关于更完善的解决方案,建议移步至笔者的另一篇博客文章查阅。本篇教程至此简要结束。
到此这篇关于利用Python通过获取剪切板数据实现百度划词搜索功能的文章就介绍到这了,更多相关Python实现百度划词搜索功能内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









