利用Python通过获取剪切板数据实现百度划词搜索功能
作者:最遥远的天秤 发布时间:2023-07-14 06:59:06
一、实现划词功能
说是划词翻译,实际上我们是通过获取用户的剪切板内容,通过一系列的操作得到的。首先呢,我们就先实现如何获取剪切板内容的程序
首先先在桌面创建一个文件夹,命名为“MoveSearch”文件夹
之后我们双击点入这个文件夹,创建一个“MainWindow.py”的程序和“Clipborad.py”这两个程序
我们这里使用Sublime进行操作演示,我们点开“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模块让程序进行一定时间的休眠,实现合理分配
我们通过上面的程序就可以看到,我们的程序将我们的值返回了回来。
其实我们可以发现,我们的复制程序非常简单,所以我们我们返回主程序编写代码。
我们现在要编写一个打开外部网页的办法。这个时候呢有很多种选择,那么这里我选择大概是大家比较常用的库——PyQt5来操作。其实最近呢QT也开发了一个新的Python接口,有兴趣的小伙伴们可以修改代码做一些尝试
我们先导入程序运行所需要的模块
我们接下来编写一个类,进行我们的窗口处理
首先我们先设置窗口的标题,接下来设置窗口出现的位置和它的大小,接下来使用浏览器文件创建它。在这里我们并没有写出访问的链接,因为我们还不知道百度的搜索规则
使用百度进行搜索后,观察地址栏的变化,可以看到,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
2.我们程序运行后无法继续使用网页
三、解决问题
这个程序呢我最近还是要重新思考一下思路,发现很多方式都不是特别正确,所以可以移步到我的另一篇博客。那么这片博客就这样简单结束了哈!
来源:https://blog.csdn.net/qq_45030271/article/details/117374227
猜你喜欢
- 观察者模式结构图概念一个"演员"(被观察者),一群"观众"(观察者),一台"摄影机&quo
- python面向对象编程入门,我们需要不断学习进步"""抽象工厂模式的实现"""
- cookie并不陌生,与session一样,能够让http请求前后保持状态。与session不同之处,在于cookie数据仅保存于客户端。r
- 不知道算不算DW4的大BUG. DW4实际的运行如下: 读注册表中HKEY_CURRENT_USER/
- 代码'########### '检测远程文件是否存在 '########### function CheckURL(
- torch.Tensor有4种常见的乘法:*, torch.mul, torch.mm, torch.matmul. 本文抛砖引玉,简单叙述
- 实际数据分析中遇到需求,把某个Excel表格按照某一列分为多个sheet,并且要求如果某个key对应的行数较少应该合并到一个sheet中。i
- 左右布局,图片的宽度不固定。正好前几天测试闭合浮动元素时发现了overflow的特殊现象,倒是正好可以用在这里。测试通过:ie6/7&nbs
- 前言在搜集了很多文本语料之后,会开始漫长的数据清洗过程,通常要不断迭代。1. 问题描述有些文本数据中,会包含一些特殊符号。猜想可能是从某些富
- 一、何谓ASP缓存/为什么要缓存当你的web站点采用asp技术建立的初期,可能感觉到的是asp * 页技术带来的便利性,以及随意修改性、自如
- 传统行业里,缺做互联网资深的人;互联网行业里,缺玩传统业务资深的人。于是会造成很多问题,比如两边难沟通,在传统行业者心目中,网络营销e-Ma
- 第一种,也是我最常用的,第一帧里加上这个比较灵活,想要自定义加入菜单,只要定义drMenu这个对象就可以了var drMenu&n
- 我需要查询从现在算起五天前的日期。按照商业习惯,这五天应该不包含星期六和星期天。专家回答:对于许多跟商业日期有关的情况,最好的解决方案是使用
- 在Firefox推出3.5后,他增加了许多新的支持,今天抽空将他们整理一下。属性image-renderingtext-renderingi
- JavaScript 中的并没有提供像 VBScript 里的 DateAdd 方法用于日
- 注:文中未表明的地方output 输出都是基于IE6.0,其中表明FF的地方为Mozilla Firefox2.0,还要注意文中的大小写ja
- 在标志设计中文字与图形元素总是紧密配合,只有恰当的字体与图形搭配时才能发挥最大的视觉效果。这也意味着你不能抛开图案,只是一厢情愿地选择你自己
- 简述和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。YAML不是XML。为什么
- 想必大家都知道MSSQL中SA权限是什么,可以说是至高无上。今天我就它的危害再谈点儿,我所讲的是配合NBSI上传功能得到WebShell。在
- 在html 5增加了新元素header、footer,测试过发现IE不能解析html 5新增的元素。代码如下:<!DOCTYPE&nb