如何将 QWebEngineProfile 设置为 QWebEngineView

2023-03-12Python开发问题
4

本文介绍了如何将 QWebEngineProfile 设置为 QWebEngineView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想为不同的 QWebEngineViews 设置不同的 QWebEngineProfiles,这意味着每个视图都有自己的 cookie 存储.我找不到任何有关它的文档,因此将不胜感激所有帮助.任何将独立 cookie 存储设置为独立 web 视图的其他方法的任何建议也将有所帮助.干杯.

I want to set different QWebEngineProfiles to different QWebEngineViews meaning each view will have its own cookie store. I cant find any documentation on it therefore all help would be greatly appreciated. Any suggestion of another method of setting independent cookie stores to independent webviews will also help. Cheers.

代码如下(此处连接信号格式不正确,但请放心,在真实代码中是正确的):

Code is below (connecting the signal did not format properly here but rest assured it is correct in the real code):

from PyQt5.QtCore import *
from PyQt5.QtWidgets import * 
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys

class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args,**kwargs)
        self.browser={}
        self.cookiestore={}
        self.page={}
        No = input("No: ")
        for i in range(int(No)):
            self.browser[str(i)] = QWebEngineView()
            storagename = str(i)
            self.cookiestore[str(i)] = QWebEngineProfile(storagename, self.browser[str(i)])
            self.page[str(i)] = QWebEnginePage(self.cookiestore[str(i)], self.browser[str(i)])
            self.browser[str(i)].setPage(self.page[str(i)])
            self.browser[str(i)].load(QUrl("https://www.google.com"))
      self.browser[str(i)].loadFinished.connect(lambda:self._loaded(str(i)))

    def _loaded(self, No):
        self.browser[No].page().toHtml(self._callable)
    def _callable(self, data):
        self.html = data
        if "" in self.html:
            print("Done")
        else:
            print("wait")

app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

推荐答案

如果你想建立一个 QWebEngineProfile 到一个 QWebEngineView 你必须通过一个 QWebEnginePage 如下所示:

If you want to establish a QWebEngineProfile to a QWebEngineView you must do it through a QWebEnginePage as I show below:

webview = QWebEngineView()
profile = QWebEngineProfile("somestorage", webview)
webpage = QWebEnginePage(profile, webview)
webview.setPage(webpage)

例子:

from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEnginePage
from PyQt5.QtWidgets import QApplication

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    views = []
    for i in range(5):
        webview = QWebEngineView()
        profile = QWebEngineProfile(f"storage-{i}", webview)
        webpage = QWebEnginePage(profile, webview)
        webview.setPage(webpage)
        webview.load(QUrl("https://stackoverflow.com/questions/48142341/how-to-set-a-qwebengineprofile-to-a-qwebengineview"))
        webview.show()
        views.append(webview)
    sys.exit(app.exec_())

这篇关于如何将 QWebEngineProfile 设置为 QWebEngineView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10

按10分钟间隔对 pandas 数据帧进行分组
Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)...
2024-08-22 Python开发问题
11