本文主要介绍PyQt5的QWebEngineView的使用实例,帮助大家更好的学习和使用python。有兴趣的朋友可以了解下一篇。支持视频播放self.settings().setAttribute(QWebEngineSettings.PluginsEnabled,True)#支持视频播放self.settings().setAttribute(QWebEngineSettings.PluginsEnabled,True)#支持视频播放2.支持页面关闭请求self.page().windowCloseRequested.connect(self.on_windowCloseRequested)#页面关闭请求3.支持页面下载请求self.page().profile().downloadRequested.connect(self.on_downloadRequested)#页面下载请求【以下代码,完整复制,运行直接可以使用]importsysimportosimportdatetimefromPyQt5.QtWidgetsimport*fromPyQt5.QtCoreimport*fromPyQt5.QtWebEngineWidgetsimportQWebEngineView,QWebEngineSettings#调试窗口配置#如果不想自己创建调试窗口,可以使用Chrome连接到这个地址进行调试DEBUG_PORT='5588'DEBUG_URL='http://127.0.0.1:%s'%DEBUG_PORTos.environ['QTWEBENGINE_REMOTE_DEBUGGING']=DEBUG_PORT#########################################################创建主窗口###############################################classMainWindow(QMainWindow):def__init__(self,*args,**kwargs):super().__init__(*args,**复制代码kwargs)self.setWindowTitle('我的浏览器')#self.showMaximized()self.setWindowFlags(Qt.FramelessWindowHint)#####createtabwidgetself.tabWidget=QTabWidget()self.tabWidget.setTabShape(QTabWidget.Triangular)self.tabWidget.setDocumentMode(真)self.tabWidget.setMovable(真)self.tabWidget.setTabsClosable(真)self.tabWidget.tabClos??eRequested.connect(self.close_Tab)self.setCentralWidget(self.tabWidget).webview=WebEngineView(self)#self必须有,就是将主窗口作为参数传递给浏览器self.webview.load(QUrl("https://www.baidu.com"))self.create_tab(self.webview)#网页调试窗口self.inspector=QWebEngineView()self.inspector.setWindowTitle('WebInspector')self.inspector.load(QUrl(DEBUG_URL))self.webview.loadFinished.connect(self.handleHtmlLoaded)#加载后显示调试页面defhandleHtmlLoaded(self,ok):ifok:self.webview.page().setDevToolsPage(self.inspector.page())self.inspector.show()#Createtabdefcreate_tab(self,webview):self.tab=QWidget()self.tabWidget.addTab(self.tab,"NewTabPage")self.tabWidget.setCurrentWidget(self.tab)#####self.Layout=QHBoxLayout(self.tab)self.Layout.setContentsMargins(0,0,0,0)self.Layout.addWidget(webview)#closetabdefclose_Tab(self,index):ifself.tabWidget.count()>1:self.tabWidget.removeTab(index)else:self.close()#当只有1个tab时,关闭主窗口##########################################################创建浏览器##################################################WebEngineView类(QWebEngineView):def__init__(self,mainwindow,parent=None):super(WebEngineView,self).__init__(parent)self.mainwindow=mainwindow#############self.settings().setAttribute(QWebEngineSettings.PluginsEnabled,True)#支持视频播放self.page().windowCloseRequested.connect(self.on_windowCloseRequested)#关闭页面请求self.page().profile().downloadRequested.connect(self.on_downloadRequested)#页面下载请求#支持页面关闭请求defon_windowCloseRequested(self):the_index=self.mainwindow.tabWidget.currentIndex()self.mainwindow.tabWidget.removeTab(the_index)#支持页面下载按钮defon_downloadRequested(self,downloadItem):ifdownloadItem.isFinished()==FalseanddownloadItem.state()==0:###生成文件存放地址the_filename=downloadItem.url().fileName()iflen(the_filename)==0or"”不在文件名中:cur_time=datetime.datetime.now().strftime('%Y%m%d%H%M%S')the_filename="下载文件"+cur_time+".xls"the_sourceFile=os.path.join(os.getcwd(),the_filename)###下载文件#downloadItem.setSavePageFormat(QWebEngineDownloadItem.CompleteHtmlSaveFormat)downloadItem.setPath(the_sourceFile)downloadItem.accept()downloadItem.finished.connect(self.on_downloadfinished)#下载完成触发函数defon_downloadfinished(self):js_string='''alert("Next如果下载成功,请到软件所在目录找到下载文件!");'''self.page().runJavaScript(js_string)#重写createwindow()defcreateWindow(self,QWebEnginePage_WebWindowType):new_webview=WebEngineView(self.mainwindow)self.mainwindow.create_tab(new_webview)returnnew_webview#########################################################入门##################################################if__name__=="__main__":app=QApplication(sys.argv)the_mainwindow=MainWindow()the_mainwindow.show()sys.exit(app.exec())复制代码
