python 浏览器 PyQt5

[题目四]浏览器:利用VC++.net里的浏览器控件实现浏览器,除以下步骤外,请参照常用的浏览器扩充功能。不少浏览器在发展初期都是利用IE的内核来实现的。

拓展举例:各种浏览器功能的实现。
步骤:
1、在Form上放置webbrower、button、textbox控件
2、利用panel控件(容器)来帮助安排界面
容器是什么:容易就是一类控件,用来放其他控件,以使得界面整洁有序
比如:

在这里插入图片描述
3、利用控件的各种属性来设定控件的位置符合需要
4、Button点击后,操作:
webBrowser1.Navigate(textBox1.Text);
//下面为C++代码,可参考://webBrowser1->Navigate( this->textBox1->Text );
在这里插入图片描述

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
# 创建主窗口
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        """
        :param args: 父类参数
        :param kwargs: 父类参数
        """
        super().__init__(*args, **kwargs)
        # 设置窗口标题
        self.setWindowTitle('简易浏览器')
        # 设置窗口大小900*600
        self.resize(1300, 700)
        self.show()
        # 创建tabwidget(多标签页面)
        self.tabWidget = QTabWidget()
        self.tabWidget.setTabShape(QTabWidget.Triangular)
        self.tabWidget.setDocumentMode(True)
        self.tabWidget.setMovable(True)
        self.tabWidget.setTabsClosable(True)
        self.tabWidget.tabCloseRequested.connect(self.close_Tab)
        self.setCentralWidget(self.tabWidget)

        # 第一个tab页面
        self.webview = WebEngineView(self)  # self必须要有,是将主窗口作为参数,传给浏览器
        self.webview.load(QUrl("http://baidu.com"))
        self.create_tab(self.webview)

        # 使用QToolBar创建导航栏,并使用QAction创建按钮
        # 添加导航栏
        navigation_bar = QToolBar('Navigation')
        # 设定图标的大小
        navigation_bar.setIconSize(QSize(16, 16))
        # 添加导航栏到窗口中
        self.addToolBar(navigation_bar)

        # QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中
        # 添加前进、后退、停止加载和刷新的按钮
        back_button = QAction(QIcon('icons/houtui.png'), 'Back', self)
        next_button = QAction(QIcon('icons/qianjin.png'), 'Forward', self)
        stop_button = QAction(QIcon('icons/close.png'), 'stop', self)
        reload_button = QAction(QIcon('icons/shuaxin.png'), 'reload', self)

        # 绑定事件
        back_button.triggered.connect(self.webview.back)
        next_button.triggered.connect(self.webview.forward)
        stop_button.triggered.connect(self.webview.stop)
        reload_button.triggered.connect(self.webview.reload)

        # 将按钮添加到导航栏上
        navigation_bar.addAction(back_button)
        navigation_bar.addAction(next_button)
        navigation_bar.addAction(stop_button)
        navigation_bar.addAction(reload_button)

        # 添加URL地址栏
        self.urlbar = QLineEdit()
        # 让地址栏能响应回车按键信号
        self.urlbar.returnPressed.connect(self.navigate_to_url)

        navigation_bar.addSeparator()
        navigation_bar.addWidget(self.urlbar)

        # 让浏览器相应url地址的变化
        self.webview.urlChanged.connect(self.renew_urlbar)
    # 显示地址
    def navigate_to_url(self):
        q = QUrl(self.urlbar.text())
        if q.scheme() == '':
            q.setScheme('http')
        self.webview.setUrl(q)
    # 响应输入的地址
    def renew_urlbar(self, q):
        # 将当前网页的链接更新到地址栏
        self.urlbar.setText(q.toString())
        self.urlbar.setCursorPosition(0)
    # 创建tab页面
    def create_tab(self, webview):
        self.tab = QWidget()
        self.tabWidget.addTab(self.tab, "新建页面")
        self.tabWidget.setCurrentWidget(self.tab)

        # 渲染到页面
        self.Layout = QHBoxLayout(self.tab)
        self.Layout.setContentsMargins(0, 0, 0, 0)
        self.Layout.addWidget(webview)
    # 关闭tab页面
    def close_Tab(self, index):
        if self.tabWidget.count() > 1:
            self.tabWidget.removeTab(index)
        else:
            self.close()  # 当只有1个tab时,关闭主窗口
# 创建浏览器,重写重写createwindow方法实现页面连接的点击跳转

class WebEngineView(QWebEngineView):
    def __init__(self, mainwindow, parent=None):
        super(WebEngineView, self).__init__(parent)
        self.mainwindow = mainwindow
    def createWindow(self, QWebEnginePage_WebWindowType):
        new_webview = WebEngineView(self.mainwindow)
        self.mainwindow.create_tab(new_webview)
        return new_webview


# 程序入口
if __name__ == "__main__":
    app = QApplication(sys.argv)# 创建主窗口
    browser = MainWindow()
    browser.show()# 运行应用,并监听事件
    sys.exit(app.exec_())

效果

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python-pyqt5-hexview是一种基于PythonPyQt5这两个开发工具创建的十六进制数据查看器,是一个实用的工具,可以方便地查看二进制、十六进制数据。它提供了一种方便的方法来查看和编辑二进制文件,可以快速鉴定和分析数据,是开发人员、全研究人员和网络管理员的理想选择。 Python-pyqt5-hexview可以明显提高开发人员的编程效率,节省时间和精力。它提供了一个友好的图形用户界面,用户可以在这个界面中选择要查看的数据文件,并自动将其转换成十六进制格式。具体而言,用户可以通过界面的文件浏览器来选择所需文件并打开文件。接下来,Python-pyqt5-hexview将自动将其读入并将数据转换成十六进制形式,并将其呈现在界面上。 Python-pyqt5-hexview支持多种常见的数据格式,以便用户可以轻松地查看和编辑复杂的数据文件。此外,它还具有许多其他功能,包括选择数据的起始和结束位置、搜索特定的十六进制模式、支持编辑和自动保存等。总之,Python-pyqt5-hexview是一个极为实用的数据查看器,为用户提供了一种方便、快速和高效的方式来查看和分析二进制和十六进制数据。 ### 回答2: Python-pyqt5-hexview是一种Python的库,是一个用于视觉化hex编辑器的插件。它使用PyQt5创建了一个用户界面,使用户能够以字节的形式查看和编辑二进制文件。此外,它还提供了搜索和替换功能,使用户能够快速准确地定位到需要编辑的信息。Python-pyqt5-hexview易于使用,具有良好的用户界面,是一款非常实用的工具。它可以被应用于各种领域,如数据恢复和修复、漏洞分析和漏洞利用。通过Python-pyqt5-hexview,用户可以查看和编辑数据,发现和利用漏洞,更好地理解和分析二进制文件。此外,它还可以被用于创建自定义hex编辑器,满足特定需求的个性化开发。总之,Python-pyqt5-hexview是一个功能强大的工具,为大量二进制文件的处理提供了方便、快捷的途径。 ### 回答3: Python-PyQt5-Hexview是一个PythonPyQt5编写的十六进制查看器,可以用于查看和编辑二进制文件。它具有用户友好的界面和丰富的操作功能,可以以字节为单位显示文件内容,并支持多种数据视图,方便用户查看和编辑不同格式的数据。此外,Python-PyQt5-Hexview还支持从文件和剪贴板中导入和导出数据,用户可以轻松地将文件内容复制到剪贴板并粘贴到其他应用程序中。除此之外,用户还可以将文件保存为常见的二进制文件格式,如.HEX或.BIN,方便用户进行后续的处理和分析。Python-PyQt5-Hexview还可以进行搜索和替换操作,用户可以快速定位和修改文件中的关键信息。Python-PyQt5-Hexview支持Windows、Linux和MacOS等多个操作系统,用户可以在不同平台上轻松使用它。总之,Python-PyQt5-Hexview是一个功能强大且易于使用的十六进制查看器,可以帮助用户快速查看和编辑二进制文件,是程序员和全专家必备的工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值