每次打开百度太麻烦?用程序直接打开网页 Python实现百度划词搜索功能(获取剪切板数据)

news2024/11/26 20:19:57

浏览顺序

  • 实现划词功能
    • 运行错误
  • 解决问题
  • 转载声明

实现划词功能

说是划词翻译,实际上我们是通过获取用户的剪切板内容,通过一系列的操作得到的。首先呢,我们就先实现如何获取剪切板内容的程序
在这里插入图片描述
首先先在桌面创建一个文件夹,命名为“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)

运行错误

我们可以发现程序运行时会出现好多个错误

  1. 我们的类创建的不成功

    我们第二次进行复制的时候我们会发现。出现了这样的报错QWidget: Must construct a QApplication before a QWidget
    在这里插入图片描述
    2.我们程序运行后无法继续使用网页
    在这里插入图片描述

解决问题

这个程序呢我最近还是要重新思考一下思路,发现很多方式都不是特别正确,所以可以移步到我的另一篇博客。那么这片博客就这样简单结束了哈!

转载声明

本文于2021年6月5日首发自CSDN,如需转载,请附上原文链接:每次打开百度太麻烦?用程序直接打开网页!Python实现百度划词搜索功能(获取剪切板数据)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pac自动代理

文章目录1.pac 定义2. 参考配置地址3. 实际配置案例3.1 编写pac文件3.1.1 return 语句有三种指令:3.1.2 内置函数3.1.2.1 dnsDomainIs3.1.2.2 shExpMatch3.1.2.3 isInNet3.1.2.4 主机ip3.1.2.5 dnsResolve3.1.2.6 isPlainHostName3.1.2.7 isResolvable3.1.2.8 dnsDo…

RabbitMQ初步到精通-第十章-RabbitMQ之Spring客户端源码

目录 第十章-RabbitMQ之Spring客户端源码 1. 前言 2. 客户端消费代码 2.1 消费的实现方式 2.2 消费中注解解释 2.3 推测Spring实现过程 3.MQ消费源码分析 3.1 集成SpringBoot 启动过程 3.2 Broker投递消息给客户端过程 3.3 客户端消费过程 4. 总结 第十章-RabbitMQ之S…

【Linux】线程安全

文章目录1.线程互斥1.1.线程间互斥的相关概念1.2互斥量1.3互斥量接口1.4互斥量实现原理2.可重入VS线程安全3.常见锁概念3.1死锁3.2常见死锁情况3.2.1情况一:忘记释放锁3.2.2情况二:线程重复申请锁3.2.3情况三:双线程多锁申请3.3锁的相关概念4…

m在VBLAST协作MIMO系统分部使用LDPC,Turbo,卷积三种信道编译码进行误码率matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 从上面的结构可知,整个卷积编码的结构可由CRC校验,卷积编码,打孔组成,其中打孔的作用就是讲卷积编码后的码率变为所需要的码率进行发送。 …

一种在行末隐藏有效载荷的新供应链攻击技术研判

近期,Phylum检测到数十个新发布的Pypi软件包执行供应链攻击,在这些软件包中,通过隐藏的__import__将窃取程序投递到开发人员的机器上。攻击者利用代码审核者所使用IDE默认的不换行代码显示设置隐藏自身的行为与载荷,本文将就其中出…

栈简介、手写顺序栈、手写链栈和栈的应用

一. 简介 1. 什么是栈? 栈是一种只能从表的一端存取数据且遵循 "先进后出"("后进先出") 原则的线性存储结构。栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构。 C#中提供顺序栈:Stack&…

【MySQL基础】如何安装MySQL?如何将MySQL设置成服务?

目录 一、MySQL的安装 1、解压配置 2、步骤安装 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、MySQL的安装 MySQL的安装有两种方式:解压配置和步骤安装 1、解压配置 需提前从官网直接下载压缩包,进…

【MySQL篇】第二篇——库的操作

目录 创建数据库 创建数据库案例 字符集和校验规则 查看系统默认字符集以及校验规则 查看数据库支持的字符集 查看数据库支持的字符集校验规则 校验规则对数据库的影响 操纵数据库 查看数据库 显示创建语句 修改数据库 数据库删除 备份和恢复 备份 还原 注意事…

常见磁盘调度算法总结

磁盘调度算法📖1. 最短寻道时间优先(SSTF)📖2. 电梯算法(SCAN或C-SCAN)📖3. 最短定位时间优先(SPTF)📖4. 总结由于IO的高成本,操作系统在决定发送…

C语言 0 —— 计算机硬件架构及信息在计算机中的表示

当前的计算机系统,如Window ,Linux,Mac 基本都是基于冯诺依曼的驱动架构设计的。 冯诺依曼架构输入设备先输入公式,给运算器,运算器先算 先算2*5 ,临时放在CPU内部寄存器中,寄存器不够用的时候会…

vscode插件开发(四)Webview(1)

上一篇详细讲解了命令,这回我们一起来看一下Webview。vscode的插件其实可以分为两种,一种是webview插件,另一种是非webview插件。 webview插件的自由度很高,可以满足开发者的各种定制化的要求;而非webview插件只能使用…

我悟了!Mysql事务隔离级别其实是这样!

问题描述 ​ 最近几天在忙项目,有个项目是将业务收集到的数据变动,异步同步到一张数据表中。在测试的过程时,收到QA的反馈,说有订单的数据同步时好时坏。我怀着疑惑的表情打开了那段代码,它的逻辑大概是这样的&#x…

Zookeeper实现分布式锁的原理。

之前学习Redis时候,我们利用Redis实现了分布式锁。 黑马点评项目Redis实现分布式锁_兜兜转转m的博客-CSDN博客 为什么提出了分布式锁的概念呢? 因为在单体项目中,锁是基于JVM虚拟机实现的,在分布式情况下,JVM就不唯…

FullGC频繁,线程数持续增长排查

告警 线上应用fullgc频繁,收到告警 GC监控—堆内存不足 查看近12小时的监控,发现Survivor区一直处于 满状态、fullgc非常频繁、但没有内存溢出的现象,很明显是堆内存不足 GC日志分析—暂停时间并不长 因为fullgc相当频繁,抽…

项目管理(知识体系概述)

项目的定义:为创造独特的产品、服务或者成果进行的临时性工作。 项目的特性:1、独特的产品、服务、成果;2、临时性工作。 项目管理的目的(为了解决什么问题): 1、达成业务目标 2、满足相关方期望 3、提供项目的可预测性 4、提高项目的成果性。 5、在适当的时刻交付…

机器人运动学标定:基于考虑约束的指数积的运动学标定方法——只需要测量位置,避免冗余约束

文章目录写在前面为什么要消除归一化和正交化操作?只用位置而不是位姿去做标定的原因基于消除冗余约束步骤的参数辨识模型分析参考文献写在前面 基于指数积的运动学标定方法介绍: 机器人运动学标定:基于指数积的串联机构运动学标定 机器人运…

Vue表单修饰符:v-model.lazy、v-model.number、v-model.trim

表单修饰符有:lazy、number、trim;修饰符加在v-model后面; lazy修饰符: v-model的作用是双向绑定表单,能获取到input输入框的值,而且是实时获取的,就是当你输入框里的值发生改变就会获取到&…

【Shell 脚本速成】02、Shell 变量详解

目录 一、变量介绍 变量存取原理 二、变量定义 2.1 什么时候需要定义变量? 2.2 定义一个变量 定义变量举例: 定义变量演示: 2.3 取消变量 unset 2.4 有类型变量 declare declare 命令参数: 案例演示: 三…

向前迈进!走入GC世界:G1 GC原理深入解析

第零章:名词解释 mutator:应用线程 STW:Stop-The-World,指除了GC线程,其它所有线程全部暂停的一段时间 并发:指代GC线程与mutator在同一时刻执行任务 并行:指代多个GC线程在同一时刻执行任务…

一站式元数据治理平台——Datahub

一站式元数据治理平台——Datahub万字保姆级长文——Linkedin元数据管理平台Datahub离线安装指南 - 独孤风 - 博客园 (cnblogs.com)企业级数据治理工作怎么开展?Datahub这样做 - 独孤风 - 博客园 (cnblogs.com)【DataHub】 现代数据栈的元数据平台–如何与spark集成…