zoukankan      html  css  js  c++  java
  • 【Python】基于PyQt5实现简易浏览器

    from PyQt5 import QtWidgets,QtCore,QtGui
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    import sys,os,requests
    from PyQt5.QtWebEngineWidgets import *
    
    
    class UI(QMainWindow,):
        def __init__(self):
            super(UI, self).__init__()
            self.setWindowTitle('Web browser')
            self.resize(680,480)
            self.setWindowIcon(QtGui.QIcon('./liulanqi.png'))
            self.main_toolbar = QtWidgets.QToolBar()
            self.main_toolbar.setIconSize(QtCore.QSize(16,16))
            self.addToolBar(self.main_toolbar)
            self.tabs = QtWidgets.QTabWidget()
            self.tabs.setDocumentMode(True)
            self.tabs.setTabsClosable(True)
            self.tabs_layout = QtWidgets.QGridLayout()
            self.tabs.setLayout(self.tabs_layout)
            self.url_edit = QtWidgets.QLineEdit()
    
    
            self.browser = QWebEngineView()
            Url = 'http://www.baidu.com'
            self.browser.setUrl(QtCore.QUrl(Url))
            self.tabs_layout.addWidget(self.browser)
            self.tabs.addTab(self.browser,'')
            self.browser.loadFinished.connect(lambda :self.tabs.setTabText(0,self.browser.page().title()))
            self.setCentralWidget(self.tabs)
    
    
    
            self.turn_button = QAction(QIcon('./zhuandao.png'),'Turn',self)
            self.back_button = QAction(QIcon('./fanhui.png'),'Back',self)
            self.next_button = QAction(QIcon('./tiaozhuan.png'),'Forward',self)
            self.stop_button = QAction(QIcon('./close.png'),'Stop',self)
            self.reload_button = QAction(QIcon('./shuaxin.png'),'Reload',self)
            self.add_button = QAction(QIcon('./add.png'),'Addpage',self)
    
    
    
            self.main_toolbar.addAction(self.back_button)
            self.main_toolbar.addAction(self.next_button)
            self.main_toolbar.addAction(self.stop_button)
            self.main_toolbar.addAction(self.reload_button)
            self.main_toolbar.addAction(self.add_button)
            self.main_toolbar.addWidget(self.url_edit)
            self.main_toolbar.addAction(self.turn_button)
    
    
    
            self.back_button.triggered.connect(self.browser.back)
            self.next_button.triggered.connect(self.browser.forward)
            self.stop_button.triggered.connect(self.browser.close)
            self.reload_button.triggered.connect(self.browser.reload)
            self.turn_button.triggered.connect(self.OpenUrlLine)
            self.browser.urlChanged.connect(self.setUrlLine)
            self.tabs.tabBarDoubleClicked.connect(self.NewPage)
            self.add_button.triggered.connect(self.NewPage)
            self.tabs.tabCloseRequested.connect(self.Closepage)
    
    
        def setUrlLine(self,url):
            self.url_edit.setText(url.toString())
    
        def OpenUrlLine(self):
            self.urlline = self.url_edit.text()
            print(self.urlline)
            self.browser.setUrl(QtCore.QUrl(self.urlline))
    
        def NewPage(self,url='http://www.baidu.com',label=''):
            browser = QWebEngineView()
            Url = 'http://www.baidu.com'
            browser.setUrl(QtCore.QUrl(Url))
            i = self.tabs.addTab(browser,label)
            self.tabs.setCurrentIndex(i)
            print(i)
    
            browser.loadFinished.connect(lambda :self.tabs.setTabText(i,browser.page().title()))
    
        def Closepage(self,i):
            if self.tabs.count() < 2:
                return
            self.tabs.removeTab(i)
    
    
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        gui = UI()
        gui.show()
        sys.exit(app.exec_())

    git:https://github.com/zxingwork/Py/tree/master/Webbrowser

    还有观看视频和下载文件的问题暂未解决,有什么建议多多指教,一起交流。

  • 相关阅读:
    Python+fiddler(基于Cookie绕过验证码自动登录)
    Python+selenium(警告框处理)
    Python+selenium(多表单、多窗口切换)
    Python+selenium(定位一组元素)
    Python+selenium登录测试
    【转载】python format遇上花括号{}
    【转载】判断当前使用的编译器及操作系统
    动态库的创建,隐式加载和显式加载
    Google C++单元测试框架GoogleTest---AdvancedGuide(译文)
    三次样条插值 cubic spline interpolation
  • 原文地址:https://www.cnblogs.com/zxingwork/p/11349555.html
Copyright © 2011-2022 走看看