def __init__(self, *args, **kwargs): super(Window, self).__init__(*args, **kwargs) # 用户1 self.webView1 = QWebEngineView(self) profile1 = QWebEngineProfile('storage1', self.webView1) profile1.setPersistentStoragePath('Tmp/Storage1') print(profile1.cookieStore()) # 如果要清除cookie # cookieStore = profile1.cookieStore() # cookieStore.deleteAllCookies() # cookieStore.deleteSessionCookies() page1 = QWebEnginePage(profile1, self.webView1) self.webView1.setPage(page1) self.addTab(self.webView1, '用户1') # 用户2 self.webView2 = QWebEngineView(self) profile2 = QWebEngineProfile('storage2', self.webView2) profile2.setPersistentStoragePath('Tmp/Storage2') print(profile2.cookieStore()) page2 = QWebEnginePage(profile2, self.webView2) self.webView2.setPage(page2) self.addTab(self.webView2, '用户2') self.webView1.load(QUrl('https://v.qq.com')) self.webView2.load(QUrl('https://v.qq.com'))
def __init__(self, parent): super().__init__(parent) self.webview = QWebEngineView() profile = QWebEngineProfile(self.webview) profile.setPersistentCookiesPolicy( QWebEngineProfile.NoPersistentCookies) profile.setPersistentStoragePath( str(configFolder / "QtWebEngine" / "Storage" / "OffTheRecord")) self.page = self.CustomPage(profile, self.webview) self.page.loadFinished.connect(self.checkURL) self.webview.setPage(self.page) self.webview.setUrl(QUrl("https://deezer.com/login")) layout = QVBoxLayout() layout.addWidget(self.webview) self.setLayout(layout) self.arl = None self.exec_()
class MainWindow(QMainWindow): selectDownloadFolder_trigger = pyqtSignal() appLogin_trigger = pyqtSignal() class MainWebpage(QWebEnginePage): def __init__(self, profile, parent): super().__init__(profile, parent) actions = [ QWebEnginePage.Stop, QWebEnginePage.Reload, QWebEnginePage.ReloadAndBypassCache, QWebEnginePage.PasteAndMatchStyle, QWebEnginePage.OpenLinkInThisWindow, QWebEnginePage.OpenLinkInNewWindow, QWebEnginePage.OpenLinkInNewTab, QWebEnginePage.OpenLinkInNewBackgroundTab, QWebEnginePage.DownloadLinkToDisk, QWebEnginePage.DownloadImageToDisk, QWebEnginePage.DownloadMediaToDisk, QWebEnginePage.InspectElement, QWebEnginePage.RequestClose, QWebEnginePage.SavePage, QWebEnginePage.ViewSource ] for a in actions: self.action(a).setVisible(False) class ExternalWebpage(QWebEnginePage): def __init__(self, parent): super().__init__(parent) self.urlChanged.connect(self.open_browser) def open_browser(self, url): page = self.sender() webbrowser.open(url.toString(), 2, True) page.deleteLater() def createWindow(self, _type): page = None if _type == QWebEnginePage.WebBrowserTab: page = self.ExternalWebpage(self) return page def __init__(self, title, url, x=None, y=None, w=800, h=600): super().__init__() startMaximized = False if w == -1 or h == -1: self.resize(800, 600) startMaximized = True else: self.resize(w, h) self.setWindowTitle(title) self.setWindowIcon(QIcon(str(appDir / 'icon.ico'))) self.setMinimumSize(800, 600) self.webview = QWebEngineView() self.profile = QWebEngineProfile("Default", self.webview) self.profile.setCachePath( str(configFolder / "QtWebEngine" / "Cache" / "Default")) self.profile.setPersistentStoragePath( str(configFolder / "QtWebEngine" / "Storage" / "Default")) self.page = self.MainWebpage(self.profile, self.webview) self.page.loadFinished.connect(self.finishLoading) self.webview.setPage(self.page) self.setCentralWidget(self.webview) self.url = url if dev: self.dev_tools = QWebEngineView() self.webview.page().setDevToolsPage(self.dev_tools.page()) self.dev_tools.show() self.downloadFolder = None self.selectDownloadFolder_trigger.connect(self.selectDownloadFolder) self._selectDownloadFolder_semaphore = Semaphore(0) self.arl = None self.appLogin_trigger.connect(self.appLogin) self._appLogin_semaphore = Semaphore(0) if x is None or y is None or startMaximized: center = QApplication.desktop().availableGeometry().center( ) - self.rect().center() self.move(center.x(), center.y()) else: self.move(x, y) if startMaximized: self.showMaximized() def showWindow(self): self.webview.setUrl(QUrl(self.url)) self.show() def selectDownloadFolder(self): filename = QFileDialog.getExistingDirectory( self, "Select Download Folder", options=QFileDialog.ShowDirsOnly) self.downloadFolder = filename.replace('/', pathSep) self._selectDownloadFolder_semaphore.release() def appLogin(self): self.arl = None loginWindow = LoginWindow(self) self.arl = loginWindow.arl self._appLogin_semaphore.release() loginWindow.page.deleteLater() loginWindow.webview.deleteLater() loginWindow.deleteLater() def closeEvent(self, event): x = int(self.x()) y = int(self.y()) w = int(self.width()) h = int(self.height()) if x < 0: x = 0 if y < 0: y = 0 if self.isMaximized(): w = -1 h = -1 with open(configFolder / '.UIposition', 'w') as f: f.write("|".join([str(x), str(y), str(w), str(h)])) self.page.deleteLater() event.accept() def finishLoading(self, ok): if ok: self.webview.page().runJavaScript( "window.dispatchEvent(new Event('pywebviewready'))")