浏览器3.8

news/2024/10/25 17:13:59/

一个使用Python和PyQt5框架实现的网页浏览器的框架。这个浏览器包含以下主要特性:
1自定义WebEngineView:这个类是QWebEngineView的子类,它添加了两个信号:pageLoaded表示网页加载完成,openLinkInNewTabSignal表示当用户点击链接时,是否应该在新标签页中打开链接。
2MainWindow:这是浏览器窗口的主要类,它包含一个QTabWidget,用于管理多个标签页;一个工具栏,包含后退、前进、刷新等按钮;一个地址栏,用户可以输入URL;一个显示框,用于显示当前网站的标题;一个搜索栏,用户可以搜索网站;以及一个列表控件,用于显示浏览历史。
3导航和历史记录:用户可以通过点击标签页来切换不同的标签页。点击历史列表中的项,可以回到该URL对应的页面。用户可以通过点击工具栏上的后退、前进、刷新和停止按钮来导航。
4导入HTML文件:用户可以通过点击“导入HTML文件”菜单选项来选择一个HTML文件,然后在新标签页中打开它。
日志记录:应用程序使用logging模块记录日志,以便于调试和记录应用的行为。

python">import logging
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QPushButton, QVBoxLayout, QWidget, QMenuBar, QMenu, QAction, QFileDialog, QMessageBox, QTabWidget, QTabBar, QHBoxLayout, QToolBar, QLabel, QListWidget
from PyQt5.QtCore import QUrl, pyqtSignal, QObject, Qt
from PyQt5.QtGui import QMouseEvent  # 更正导入语句
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEnginePage
import os# 配置日志记录器
logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')class CustomWebEngineView(QWebEngineView):pageLoaded = pyqtSignal(bool)  # 添加一个信号来表示网页加载状态openLinkInNewTabSignal = pyqtSignal(QUrl)def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)self.page().linkHovered.connect(self.linkHovered)self.hoveredLink = ""def contextMenuEvent(self, event):# 实现右键菜单menu = QMenu(self)back_action = menu.addAction("后退")forward_action = menu.addAction("前进")reload_action = menu.addAction("刷新")stop_action = menu.addAction("停止")copy_action = menu.addAction("复制")paste_action = menu.addAction("粘贴")cut_action = menu.addAction("剪切")select_all_action = menu.addAction("全选")open_in_new_tab_action = menu.addAction("在新标签页打开链接")  # 新增动作action = menu.exec_(self.mapToGlobal(event.pos()))if action == back_action:self.back()elif action == forward_action:self.forward()elif action == reload_action:self.reload()elif action == stop_action:self.stop()elif action == copy_action:self.page().triggerAction(QWebEnginePage.Copy)elif action == paste_action:self.page().triggerAction(QWebEnginePage.Paste)elif action == cut_action:self.page().triggerAction(QWebEnginePage.Cut)elif action == select_all_action:self.page().triggerAction(QWebEnginePage.SelectAll)elif action == open_in_new_tab_action:self.open_link_in_new_tab()def copy_selected_text(self):selected_text = self.selectedText()if selected_text:clipboard = QApplication.clipboard()clipboard.setText(selected_text)def paste_text(self):clipboard 

http://www.ppmy.cn/news/1541881.html

相关文章

什么是组态软件?组态软件有哪些类型?

组态软件的定义 组态软件实际上是一种开发工具软件或开发环境,用户通过类似“搭积木”的方式来快速构建自己所需要的软件功能,而不需要编写计算机程序,这就是所谓的“组态”,有时候也称为“二次开发”,组态软件就称为“…

Docker 安装使用

1. 下载 下载地址:Index of linux/static/stable/x86_64/ 下载好后,将文件docker-18.06.3-ce.tgz用WinSCP等工具,上传到不能外网的linux系统服务器 2. 安装 解压后的文件夹docker中文件如下所示: 将docker中的全部文件&#xff…

《淘宝评论大探险:如何用API捕获消费者的心声?》

在淘宝这个浩瀚的星系中,每一件商品都是一个星球,而评论就是星球上居民的声音。作为星际探险家,我们的任务是使用最尖端的科技——API,去捕获那些遥远星球上居民的心声。今天,我们要讲述的是如何装备你的代码宇宙飞船&…

LLM之RAG实战(四十四)| rag-chatbot:支持Huggingface和Ollama任意模型的多PDF本地RAG方案

特点: 支持本地运行和Kaggle (new)运行支持Huggingface 和Ollama 的任意模型Process multiple PDF inputs.Chat with multiples languages (Coming soon).Simple UI with Gradio. 一、安装使用 1.1 Kaggle(推荐) Step1:把https…

030 elasticsearch查询、聚合

文章目录 查询聚合查询RestHighLevelClientElasticsearchRestTemplat SpringData对ES客户端的封装:ElasticsearchRestTemplate SpringData对CRUD的封装:ElasticsearchRepository 原生ES客户端:RestHighLevelClient 查询 package com.xd.cube…

大数据-182 Elasticsearch - 原理剖析 数据结构-倒排索引、SkipList 跳表

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案

一、背景介绍 近年来,随着网络在我国的普及和深化发展,企业的信息化建设不断深入,各行各业都加快了信息网络平台的建设,大多数单位已经或者正在铺设企业内部的计算机局域网。与此同时,网络也成为先进的新兴应用提供了…

FreeRTOS 入门指南

目录 一、引言 二、FreeRTOS 简介 1.什么是 FreeRTOS 2.FreeRTOS 的特点 三、安装 FreeRTOS 1.获取 FreeRTOS 源代码 2.导入到开发环境 四、FreeRTOS 的基本概念 1.任务 2.任务状态 3.任务优先级 4.调度器 5.同步与通信机制 五、创建任务 1.任务函数 2.创建任…