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. 运行结果
4. Tips
如果提示说缺少哪些模块的话,一般Pycharm都会有提示安装,如果没有提示,可以参考一下我运行成功的库:
矢量图的话,可以去网上下载自己喜欢的风格,有很多可以免费下载的代码部分参考了爬遍天下无敌手哥哥的文章https://www.jb51.net/article/185526.htm
来源:https://blog.csdn.net/weixin_43456810/article/details/118600157
标签:PyQt5,浏览器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
本地机apache配置基于域名的虚拟主机详解
2023-11-17 07:40:37
Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器
2007-09-23 12:43:00
发现几处IE与firefox的js和css几处不同点
2008-02-02 10:15:00
python使用正则表达式来获取文件名的前缀方法
2023-02-08 07:37:58
什么是XSLT,什么是XPath
2008-01-21 13:12:00
Python3 实现文件批量重命名示例代码
2023-06-18 00:08:32
![](https://img.aspxhome.com/file/2023/7/72127_0s.jpg)
PHP simplexml_load_string()函数实例讲解
2023-07-09 07:19:28
![](https://img.aspxhome.com/file/2023/1/55401_0s.png)
带你深入了解数据库设计中的英文术语表
2008-12-09 14:53:00
python机器学习MATLAB最小二乘法的两种解读
2022-02-19 08:00:11
![](https://img.aspxhome.com/file/2023/1/66001_0s.png)
Python保存数据至MySQL时中文问题
2011-02-23 12:06:00
asp伪静态情况下实现的utf-8文件缓存实现代码
2011-02-24 10:49:00
Python中super关键字用法实例分析
2023-12-08 06:11:46
编写一个JS组件来说说call和apply的用法
2008-11-23 17:11:00
显示ASP页面源码的代码
2008-10-12 13:05:00
简单方法实现网页自动适应任何分辨率任何窗口大小
2008-09-13 19:28:00
python扫描proxy并获取可用代理ip的实例
2023-07-29 16:42:50
python判断正负数方式
2023-07-06 11:16:12
用途相似的标签
2008-05-23 13:11:00
Golang 的defer执行规则说明
2023-07-14 08:31:10
css网页下拉菜单制作方法(2):初步实现
2007-02-03 11:39:00