用户:
Gin琴蕾查看:0 回复:0 评论:0 创建时间:2023-08-04T14:31:22

import datetime
import os
import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWebEngineWidgets import *
from PySide6.QtWebEngineCore import *
class 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) # 页面下载请求
def on_windowCloseRequested(self):
the_index = self.mainwindow.tabWidget.currentIndex()
self.mainwindow.tabWidget.removeTab(the_index)
def on_downloadRequested(self, downloadItem):
if downloadItem.isFinished() == False and downloadItem.state() == 0:
the_filename = downloadItem.url().fileName()
if len(the_filename) == 0 or "." not in the_filename:
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.setPath(the_sourceFile)
downloadItem.accept()
downloadItem.finished.connect(self.on_downloadfinished)
def on_downloadfinished(self):
js_string = '''
alert("下载成功,请到软件同目录下,查找下载文件!");
'''
self.page().runJavaScript(js_string)
def createWindow(self, QWebEnginePage_WebWindowType):
new_webview = WebEngineView(self.mainwindow)
self.mainwindow.create_tab(new_webview)
return new_webview
def certificateError(self):
return True
class Ui_Form(object):
def setupUi(self, Form):
self.widget = QWidget(Form)
self.widget.setObjectName(u"widget")
self.widget.setGeometry(QRect(0, 0, 1900, 980))
self.gridLayout = QGridLayout(self.widget)
self.gridLayout.setObjectName(u"gridLayout")
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.widget1 = QWidget(self.widget)
self.widget1.setObjectName(u"widget1")
self.horizontalLayout = QHBoxLayout(self.widget1)
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.pushButton = QPushButton(self.widget1)
self.pushButton.setObjectName(u"pushButton")
self.horizontalLayout.a喵Widget(self.pushButton)
self.pushButton_2 = QPushButton(self.widget1)
self.pushButton_2.setObjectName(u"pushButton_2")
self.horizontalLayout.a喵Widget(self.pushButton_2)
self.pushButton_3 = QPushButton(self.widget1)
self.pushButton_3.setObjectName(u"pushButton_3")
self.horizontalLayout.a喵Widget(self.pushButton_3)
self.pushButton_4 = QPushButton(self.widget1)
self.pushButton_4.setObjectName(u"pushButton_4")
self.horizontalLayout.a喵Widget(self.pushButton_4)
self.lineEdit = QLineEdit(self.widget1)
self.lineEdit.setObjectName(u"lineEdit")
self.horizontalLayout.a喵Widget(self.lineEdit)
self.widget_2 = QWidget(self.widget1)
self.widget_2.setObjectName(u"widget_2")
self.horizontalLayout.a喵Widget(self.widget_2)
self.gridLayout.a喵Widget(self.widget1, 0, 0, 1, 1)
self.widget_3 = QWidget(self.widget)
self.widget_3.setObjectName(u"widget_3")
self.horizontalLayout_2 = QHBoxLayout(self.widget_3)
self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
self.comboBox = QComboBox(self.widget_3)
self.comboBox.setObjectName(u"comboBox")
self.horizontalLayout_2.a喵Widget(self.comboBox)
self.gridLayout.a喵Widget(self.widget_3, 1, 0, 1, 1)
self.tabWidget = QTabWidget(self.widget)
self.tabWidget.setObjectName(u"tabWidget")
self.tabWidget.setTabsClosable(True)
self.gridLayout.a喵Widget(self.tabWidget, 2, 0, 1, 1)
self.retranslateUi(Form)
QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(QCoreApplication.translate("Form", u"Form", None))
self.pushButton.setText(QCoreApplication.translate("Form", u"<-", None))
self.pushButton_2.setText(QCoreApplication.translate("Form", u"->", None))
self.pushButton_3.setText(QCoreApplication.translate("Form", u"@", None))
self.pushButton_4.setText(QCoreApplication.translate("Form", u"|^|", None))
class Web(QWidget, Ui_Form):
def __init__(self,win,parent=None):
super().__init__(parent)
Ui_Form.__init__(self)
self.setupUi(self)
self.win = win
self.lw = []
self.num = 0
self.main_web()
self.tabWidget.currentChanged.connect(self.change_lw)
self.tabWidget.tabCloseRequested.connect(self.close_Tab)
self.pushButton.clicked.connect(self.back)
self.pushButton_2.clicked.connect(self.forward)
self.pushButton_3.clicked.connect(self.reload)
self.pushButton_4.clicked.connect(self.main_web)
self.tabWidget.currentChanged.connect(self.change_lw)
self.lineEdit.returnPressed.connect(self.navigate_to_url)
def main_web(self):
url = "https://hao.360.com/?src=lm&ls=n4e1d7e8c99"
webview = WebEngineView(self)
webview.setUrl(QUrl(url))
self.create_tab(webview)
def navigate_to_url(self):
q = QUrl(self.lineEdit.text())
if q.scheme() == '':
q.setScheme('http')
self.tabWidget.currentWidget().load(q)
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)
self.lw.append(webview)
self.lw[self.num].loadFinished.connect(lambda: self.maker(webview, self.tab))
self.lw[self.num].urlChanged.connect(self.renew_urlbar)
def maker(self, web, tab):
a = web.page().icon()
self.setWindowIcon(a)
self.tabWidget.setTabIcon(self.tabWidget.indexOf(tab), web.page().icon())
self.tabWidget.setTabText(self.tabWidget.indexOf(tab), web.page().title())
def close_Tab(self, index):
if self.tabWidget.count() > 1:
self.tabWidget.removeTab(index)
else:
if self.win:
self.close()
def renew_urlbar(self, q):
self.lineEdit.setText(q.toString())
self.lineEdit.setCursorPosition(0)
def change_lw(self, txt):
self.num = txt
qurl = self.lw[self.num].url()
self.renew_urlbar(qurl)
def back(self):
self.lw[self.num].back()
def forward(self):
self.lw[self.num].forward()
def reload(self):
self.lw[self.num].reload()
if __name__ == "__main__":
app = QApplication(sys.argv)
browser = Web(0)
browser.show()
sys.exit(app.exec())
作品未经作者同意和授权禁止转载,进行商业交易,但可以在本编辑器单独复制运行。