Skip to content

[问题] qwebengineview 如何同网站多账号登录? #88

@625781186

Description

@625781186

Environment : / 环境

  • OS: [e.g. Win 10]
  • Python [e.g. 3.6.4 X64]
  • PyQt5 [e.g. 5.10.1]
# Ui_man.py
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 522)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.webTabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.webTabWidget.setTabShape(QtWidgets.QTabWidget.Rounded)
        self.webTabWidget.setElideMode(QtCore.Qt.ElideLeft)
        self.webTabWidget.setDocumentMode(False)
        self.webTabWidget.setTabsClosable(True)
        self.webTabWidget.setMovable(True)
        self.webTabWidget.setObjectName("webTabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.tab)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.web1 = QtWebEngineWidgets.QWebEngineView(self.tab)
        self.web1.setUrl(QtCore.QUrl("https://www.baidu.com/"))
        self.web1.setObjectName("web1")
        self.horizontalLayout_3.addWidget(self.web1)
        self.webTabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.tab_2)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.web2 = QtWebEngineWidgets.QWebEngineView(self.tab_2)
        self.web2.setUrl(QtCore.QUrl("https://www.youtube.com/"))
        self.web2.setObjectName("web2")
        self.horizontalLayout_2.addWidget(self.web2)
        self.webTabWidget.addTab(self.tab_2, "")
        self.horizontalLayout.addWidget(self.webTabWidget)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.urlBar_toolBar = QtWidgets.QToolBar(MainWindow)
        self.urlBar_toolBar.setMovable(False)
        self.urlBar_toolBar.setAllowedAreas(QtCore.Qt.TopToolBarArea)
        self.urlBar_toolBar.setFloatable(False)
        self.urlBar_toolBar.setObjectName("urlBar_toolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.urlBar_toolBar)
        self.bookMarkBar_toolBar = QtWidgets.QToolBar(MainWindow)
        self.bookMarkBar_toolBar.setMovable(False)
        self.bookMarkBar_toolBar.setAllowedAreas(QtCore.Qt.TopToolBarArea)
        self.bookMarkBar_toolBar.setFloatable(False)
        self.bookMarkBar_toolBar.setObjectName("bookMarkBar_toolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.bookMarkBar_toolBar)
        MainWindow.insertToolBarBreak(self.bookMarkBar_toolBar)

        self.retranslateUi(MainWindow)
        self.webTabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.webTabWidget.setTabText(self.webTabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1"))
        self.webTabWidget.setTabText(self.webTabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2"))
        self.urlBar_toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
        self.bookMarkBar_toolBar.setWindowTitle(_translate("MainWindow", "toolBar_2"))

from PyQt5 import QtWebEngineWidgets
# main.py
# -*- coding: utf-8 -*-

"""
Module implementing MainWindow.
mdi icon :https://cdn.materialdesignicons.com/3.8.95/

pip install qtpy qtawesome
"""
from PyQt5.QtNetwork import QNetworkAccessManager
from PyQt5.QtWebEngineWidgets import QWebEngineProfile, QWebEngineView

from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
# import qtawesome as qta

# from PyQt5.QtWidgets import QMainWindow

try:
    from Ui_main import Ui_MainWindow
except ImportError as e:
    print("--1 --", e)
    try:
        from .Ui_main import Ui_MainWindow
    except ImportError as e:
        print("--2 --", e)


class MainWindow(QMainWindow, Ui_MainWindow):
    """
    Class documentation goes here.
    """

    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        # apn_icon = qta.icon('mdi.gamepad-round', color='green')

        self.__newTabButton = QToolButton(self)
        # self.__newTabButton.setIcon(apn_icon)
        # self.__newTabButton.setProperty('icon', apn_icon)
        self.__newTabButton.setToolTip(self.tr("Open a new web browser tab"))
        self.webTabWidget.setCornerWidget(self.__newTabButton, Qt.TopLeftCorner)

        # webEngineProfile = QWebEngineProfile.defaultProfile()
        # cookieStore = webEngineProfile.cookieStore()


        for i in range(1, 3):
            webview = getattr(self, 'web' + str(i))  # type:QWebEngineView
            if webview:
                self.set_cache(webview, i)
                webview.setUrl(QUrl("http://github.com"))

    def set_cache(self, webview: QWebEngineView, number: int):
        networkManager = QNetworkAccessManager()
        cookieJar = networkManager.cookieJar()
        # cookies = cookieJar.cookiesForUrl(strUrl)
        web_profile = webview.page().profile()
        print(web_profile)
        cookieStore = web_profile.cookieStore()
        # cookieStore.setCookie(cookies.front(), url)

        COOKIPATH = "./Cache" + str(number)
        # web_profile.setCachePath(COOKIPATH)
        web_profile.setPersistentStoragePath(COOKIPATH)
        web_profile.setPersistentCookiesPolicy(2)
        # self.web1.page().load(url)


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle(QStyleFactory.create("Fusion"))

    #    自定义CSS样式
    #    from BasePack.CommonHelper import CommonHelper
    #    styleFile = 'BasePack/style.css'
    #    qssStyle = CommonHelper.readQss( styleFile )
    #    framelessWindow.setStyleSheet( qssStyle )

    #    If you want to use this style, please pip install qdarkstyle.
    #    import qdarkstyle
    #    app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())

    ui = MainWindow()

    ui.show()
    sys.exit(app.exec_())

写不来 . 2个tab还是用了同一份coockie

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions