Python PyQt5模块实现一个浏览器的示例代码

作者:sherlockjjobs 时间:2022-02-22 04:23:47 

1. 首先是环境的安装 (本人使用的是PyCharm,python3.6)

pip3 install PyQt5 (没有指定版本的话,默认会安装最新的)
pip3 install sip
pip3 install PyQtWebEngine
(PyQtWebEngine是Qt WebEngine的一组框架,该框架提供了在应用程序中嵌入 Web 内容的能力,并且基于 Chrome 浏览器。)

2. 实现代码


from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *

import os
import sys

class MainWindow(QMainWindow):
   def __init__(self, *args, **kwargs):
       super().__init__(*args, **kwargs)

self.resize(2000, 1314)
       self.show()

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)

self.webview = WebEngineView(self)
       self.webview.load(QUrl("http://www.baidu.com"))

self.create_tab(self.webview)

navtb = QToolBar("Navigation")
       navtb.setIconSize(QSize(16, 16))
       self.addToolBar(navtb)

back_btn = QAction(QIcon(os.path.join('images', 'houtui.png')), "后退", self)
       back_btn.triggered.connect(self.webview.back)
       navtb.addAction(back_btn)

next_btn = QAction(QIcon(os.path.join('images', 'qianjin.png')), "前进", self)
       next_btn.triggered.connect(self.webview.forward)
       navtb.addAction(next_btn)

reload_btn = QAction(QIcon(os.path.join('images', 'refresh_icon.png')), "刷新", self)
       reload_btn.triggered.connect(self.webview.reload)
       navtb.addAction(reload_btn)

home_btn = QAction(QIcon(os.path.join('images', 'geren1.png')), "主页", self)
       navtb.addAction(home_btn)

self.urlbar = QLineEdit()

stop_btn = QAction(QIcon(os.path.join('images', 'cross-circle.png')), "Stop", self)
       stop_btn.triggered.connect(lambda: self.tabs.currentWidget().stop())
       navtb.addAction(stop_btn)

self.urlbar.returnPressed.connect(self.navigate_to_url)

navtb.addSeparator()
       navtb.addWidget(self.urlbar)

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)

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)

def close_Tab(self, index):
       if self.tabWidget.count() > 1:
           self.tabWidget.removeTab(index)
       else:
           self.close()

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

app = QApplication(sys.argv)

browser = MainWindow()
browser.show()

sys.exit(app.exec_())

3. 运行结果

Python PyQt5模块实现一个浏览器的示例代码

4. Tips

如果提示说缺少哪些模块的话,一般Pycharm都会有提示安装,如果没有提示,可以参考一下我运行成功的库:

Python PyQt5模块实现一个浏览器的示例代码

矢量图的话,可以去网上下载自己喜欢的风格,有很多可以免费下载的代码部分参考了爬遍天下无敌手哥哥的文章https://www.jb51.net/article/185526.htm

来源:https://blog.csdn.net/weixin_43456810/article/details/118600157

标签:PyQt5,浏览器
0
投稿

猜你喜欢

  • Python如何使用print()函数输出格式化字符串

    2021-03-09 22:43:41
  • Pycharm及python安装详细步骤及PyCharm配置整理(推荐)

    2021-03-15 21:55:51
  • Go语言实现JSON解析的方法详解

    2024-04-26 17:24:01
  • Python实现删除windows下的长路径文件

    2023-06-07 22:33:18
  • 网页设计技巧:相对路径与绝对路径的区别问题

    2008-03-04 10:12:00
  • 关于vue中根据用户权限动态添加路由的问题

    2024-05-05 09:25:11
  • Python判断对象是否为文件对象(file object)的三种方法示例

    2021-05-27 09:46:17
  • 解决python 文本过滤和清理问题

    2023-08-31 08:18:38
  • Python求两点之间的直线距离(2种实现方法)

    2021-03-28 19:24:46
  • Python Pygame实战之五款童年经典游戏合集

    2023-04-15 14:45:14
  • python如何实现int函数的方法示例

    2022-06-02 08:37:38
  • 利用MySQL系统数据库做性能负载诊断的方法

    2024-01-16 21:12:07
  • 利用Python制作百度图片下载器

    2021-02-25 09:17:55
  • Go select使用与底层原理讲解

    2024-04-28 09:14:11
  • python模块和包的应用BASE_PATH使用解析

    2021-04-15 09:46:36
  • 基于python 的Pygame最小开发框架

    2022-01-23 12:22:40
  • 50行代码实现贪吃蛇(具体思路及代码)

    2023-04-04 14:18:08
  • Go语言实现简单留言板的方法

    2024-02-12 05:51:42
  • Utf-8和Gb2312乱码问题的终结

    2008-04-05 14:04:00
  • mysql 复制过滤重复如何解决

    2024-01-18 17:55:54
  • asp之家 网络编程 m.aspxhome.com