代码:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
import urllib.request
import StrList as ll
class sc:def sc(self):f1=open('收藏.py','r')sc=ll.move_str_list(f1.read())f1.close()return sc
class save:url=Nonedef Tab_Save(self):html = urllib.request.urlopen(self.url).read()self.saveHtml("WSL浏览器_下载", html)#return htmldef saveHtml(self,file_name, file_content):# 注意windows文件命名的禁用符,比如 /with open(file_name.replace('/', '_') + ".html", "wb") as f:# 写文件用bytes而不是str,所以要转码f.write(file_content)class WebView(QWebEngineView):def __init__(self, parent):super().__init__(parent)def createWindow(self, webWindowType):return main_demo.browserclass MainDemo(QMainWindow):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)#sc1=sc()#shoucang=sc1.sc()self.tab_save=save()self.setWindowTitle('WSL浏览器')self.setWindowIcon(QIcon('icons/penguin.png'))self.resize(800, 500)self.show()# 添加URL地址栏self.urlbar = QLineEdit()# 让地址栏支持输入地址回车访问self.urlbar.returnPressed.connect(self.navigate_to_url)#renew_urlbar1# 添加标签栏""#正方形标签self.tabs = QTabWidget()self.tabs.setDocumentMode(True)#标签形状"""梯形"""self.tabs.setTabShape(QTabWidget.Triangular)#设置可拖动页面#help(self.tabs)self.tabs.setMovable(True)#self.tabs.setMovable(bool)#setMoveable(bool)#self.tabs.tabBarDoubleClicked.connect(self.tab_open)self.tabs.currentChanged.connect(self.current_tab_changed)"""#梯形标签self.tabs = QTabWidget()self.tabs.setTabShape(QTabWidget.Triangular)self.tabs.setDocumentMode(True)self.tabs.setMovable(True)self.tabs.setTabsClosable(True)#self.tabWidget.tabCloseRequested.connect(self.close_Tab)self.setCentralWidget(self.tabs)"""# 允许关闭标签self.tabs.setTabsClosable(True)# 设置关闭按钮的槽self.tabs.tabCloseRequested.connect(self.close_current_tab)#self.add_new_tab(QUrl('https://www.baidu.com/'), 'Homepage')# 设置浏览器self.browser = WebView(self)self.browser.load(QUrl('https://www.baidu.com/'))# 为标签添加索引方便管理i = self.tabs.addTab(self.browser, 'Homepage')self.tabs.setCurrentIndex(i)qurl=QUrl('https://www.baidu.com/')self.tab_save.url='https://www.baidu.com/'self.browser.urlChanged.connect(lambda qurl, browser=self.browser: self.renew_urlbar(qurl, self.browser))#self.browser.urlChanged.connect(lambda qurl, browser=self.browser: self.renew_urlbar1(qurl, self.browser))# 将标签标题改为网页相关的标题self.browser.loadFinished.connect(lambda _, i=i, browser=self.browser: self.tabs.setTabText(i, self.browser.page().title()))self.setCentralWidget(self.tabs)new_tab_action = QAction(QIcon('icons/add_page.png'), 'New Page', self)new_tab_action.triggered.connect(self.add_new_tab)# 添加导航栏navigation_bar = QToolBar('Navigation')self.addToolBar(navigation_bar)# 设定图标大小navigation_bar.setIconSize(QSize(16, 16))self.addToolBar(navigation_bar)# 添加前进、后退、停止加载和刷新的按钮"""back_button = QAction(QIcon('icons/back.png'), '后退', self)forward_button = QAction(QIcon('icons/forward.png'), '前进', self)stop_button = QAction(QIcon('icons/stop.png'), '停止加载', self)reload_button = QAction(QIcon('icons/renew.png'), '重新加载', self)new_button=QAction(QIcon('icons/add_page.png'), '新增网页', self)"""back_button = QAction(QIcon('icons/houtui.png'), '后退', self)forward_button = QAction(QIcon('icons/qianjin.png'), '前进', self)stop_button = QAction(QIcon('icons/close.png'), '停止加载', self)reload_button = QAction(QIcon('icons/shuaxin.png'), '重新加载', self)new_button=QAction(QIcon('icons/new.png'), '新增网页', self)home_button=QAction(QIcon('icons/home.png'), '首页', self)#save_button=QAction(QIcon('icons/tab_save.png'), '保存网页', self)""back_button.triggered.connect(self.tabs.currentWidget().back)forward_button.triggered.connect(self.tabs.currentWidget().forward)stop_button.triggered.connect(self.tabs.currentWidget().stop)reload_button.triggered.connect(self.tabs.currentWidget().reload)new_button.triggered.connect(self.add_new_tab)home_button.triggered.connect(self.home)#save_button.triggered.connect(self.tab_save.Tab_Save)# 将按钮添加到导航栏上navigation_bar.addAction(back_button)navigation_bar.addAction(forward_button)navigation_bar.addAction(stop_button)navigation_bar.addAction(reload_button)navigation_bar.addAction(home_button)navigation_bar.addAction(new_button)#navigation_bar.addAction(home_button)#navigation_bar.addAction(save_button)navigation_bar.addSeparator()navigation_bar.addWidget(self.urlbar)# 响应回车按钮,将浏览器当前访问的URL设置为用户输入的URLdef navigate_to_url(self):current_url = QUrl(self.urlbar.text())if current_url.scheme() == '':current_url.setScheme('http')self.tab_save.url=self.urlbar.text()self.tabs.currentWidget().load(current_url)def home(self):#https://www.hao123.com/?tn=88093251_99_hao_pg#current_url = QUrl('https://www.baidu.com/')current_url = QUrl('https://www.hao123.com/?tn=88093251_99_hao_pg')if current_url.scheme() == '':current_url.setScheme('http')self.tab_save.url=self.urlbar.text()self.tabs.currentWidget().load(current_url)# 将当前网页的链接更新到地址栏def renew_urlbar(self, url, browser=None):# 非当前窗口不更新URLif browser != self.tabs.currentWidget():return#self.add_new_tab()self.urlbar.setText(url.toString())self.urlbar.setCursorPosition(0)# 将当前网页的链接更新到地址栏def renew_urlbar1(self, url, browser=None):# 非当前窗口不更新URLif browser != self.tabs.currentWidget():returnself.add_new_tab()current_url = QUrl(self.tabs.currentWidget())#'https://www.hao123.com/?tn=88093251_99_hao_pg')if current_url.scheme() == '':current_url.setScheme('http')self.tab_save.url=self.urlbar.text()self.tabs.currentWidget().load(current_url)#self.urlbar.setText(url.toString())#self.urlbar.setCursorPosition(0)# 添加新的标签页def add_new_tab(self):# 设置浏览器self.browser = WebView(self)self.browser.load(QUrl('https://www.hao123.com/?tn=88093251_99_hao_pg'))#chrome://newtab#self.browser.load(QUrl('chrome://newtab'))# 为标签添加索引方便管理i = self.tabs.addTab(self.browser, 'Blank')self.tabs.setCurrentIndex(i)qurl=QUrl('https://www.hao123.com/?tn=88093251_99_hao_pg')self.tab_save.url='https://www.hao123.com/?tn=88093251_99_hao_pg'self.browser.urlChanged.connect(lambda qurl, browser=self.browser: self.renew_urlbar(qurl, self.browser))# 将标签标题改为网页相关的标题self.browser.loadFinished.connect(lambda _, i=i, browser=self.browser: self.tabs.setTabText(i, self.browser.page().title()))# 双击标签栏打开新页面def tab_open(self, i=-1):if i == -1:self.add_new_tab()def current_tab_changed(self, i):qurl = self.tabs.currentWidget().url()self.renew_urlbar(qurl, self.tabs.currentWidget())def close_current_tab(self, i):# 若当前标签页只有一个则不关闭if self.tabs.count() < 2:exit()returnself.tabs.removeTab(i)if __name__ == '__main__':my_application = QApplication(sys.argv) #创建QApplication类的实例main_demo = MainDemo()main_demo.show()my_application.exec_()

运行截图:

python制作浏览器相关推荐

  1. python制作浏览器 脚本之家_基于Python打造账号共享浏览器功能

    本篇文章介绍的内容会涉及到以下知识: PyQt5的使用; Selenium的使用; 代理服务器的架设和使用: 一.账号限制之痛 在如今的互联网中,免费的信息和资源占据了很大一部分,各类互联网应用提供了 ...

  2. python刷新页面_小伙利用Python制作浏览器,网友点评这小伙将来要进腾讯

    导语 好久以前看到有人做过(CSDN上?)..今天心血来潮..就想自己试试..仅此而已..用的PyQt版本是5.10...网上关于PyQt5.10的中文教程=None..所以最后做出来的效果一般(毕竟 ...

  3. python制作浏览器插件_分享一个火车浏览器脚本插件python中文分词

    最近在采集一批信息,发现火车浏览器的自带分词插件,分词效果不是很理想,在网上找了一个API分词接口:pullword 其实对于火车浏览器脚本插件用PHP和python都可以写,之前做了一个PHP分词插 ...

  4. 飞象求职学python_用Python制作markdown编辑器

    还记得在上篇提到的rest-framework,文档中提到了markdown也是可选应用. 那么这篇我们就来尝试使用markdown来制作一个在线的可以预览的editor. 安装 Python Mar ...

  5. 如何使用Python制作一个会动的地球仪?

    Python的功能十分强大,很多封装好的库调用即可能实现超级强大的效果,今天小千就来教大家如何去使用Python制作一个会动的地球仪. 今天我们要使用到的库是pyecharts,pyecharts 功 ...

  6. python文本框清空_用Python制作mini翻译器

    来源:http://suo.im/5ZI20R 1. 实例描述 在平时编程的过程中,会经常在网上翻译一些单词,本文使用Python制作一款翻译小工具,不仅可以自己用,还可以嵌入到程序当中.运行程序,效 ...

  7. 利用Python制作王者荣耀出装小助手,引来了老板的注意!

    导语 T_T并不玩这些游戏... 单纯来蹭个热点... 大概是因为蹭热点需要的技术含量比较低? 就这样吧~~~ 利用Python制作命令行版的王者荣耀出装小助手. Let's Go! 开发工具 Pyt ...

  8. 用Python制作酷炫的可视化报表。

    在数据展示中使用图表来分享自己的见解,是个非常常见的方法. 这也是Tableau.Power BI这类商业智能仪表盘持续流行的原因之一,这些工具为数据提供了精美的图形解释. 当然了,这些工具也有着不少 ...

  9. python制作查询工具发给别人使用_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

最新文章

  1. 配置动态路由协议OSPF
  2. 推荐系统(1)--splitting approaches for context-aware recommendation
  3. Android开发之策略模式初探
  4. python模块介绍-locustio:性能测试工具locustio
  5. shell判断false_Python中的True, False条件判断
  6. Android 五大存储方式具体解释
  7. Hypersonic SQL开源数据库方向比较流行的纯Java开发的关系型数据库
  8. python scikit learn 关闭开源_慕课|Python调用scikit-learn实现机器学习(一)
  9. Java 的 List 与 Scala 的 Seq 相互转换
  10. python telnet server_python工具库介绍-dubbo:通过telnet接口访问dubbo服务
  11. 模拟SAP ALV下载XLSX文件
  12. java+poi在Excel中生成二维码
  13. 笔记本桌面计算机图标不显示不出来,电脑桌面一片空白不显示图标的处理方法...
  14. Spring Boot系列 —(一)手把手搭建 SpringBoot 项目
  15. 二维码的原理竟如此简单,第一次有人说的这么明白
  16. Wox主题样式基础的自定义
  17. 实现不同的导航条,看直播app开发怎么做
  18. OA系统流程效率改进方案
  19. Java毕业设计_图书馆信息管理系统
  20. python gui 框架中显示gif_使用tkinter显示动态gif

热门文章

  1. Android图像滤镜框架GPUImage从配置到应用
  2. 2020个人所得税,税前工资 和 到手工资的相互计算源码(java)
  3. 网络管理维护(SNMP、RMON)期末考试大纲总结
  4. 网络管理与维护(5.2)RMON MIB
  5. Jenkins Mac本地环境搭建
  6. 华为计算机网络认证软件,华为认证入门计算机网络基础
  7. Gradle源码全解析,已拿offer
  8. Golang 数组的一些自问自答
  9. c语言逐语句调试和逐过程调试,逐语句调试和逐过程调试的区别
  10. Zoom会议多开 or 同时加入多个Zoom Meeting