微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QWebEngineView历史记录canGoForward / canGoBack仅在以下三个项目后有效

如何解决QWebEngineView历史记录canGoForward / canGoBack仅在以下三个项目后有效

我有一个简单的应用程序,其中根据访问的网页的历史记录启用/禁用后退和前进按钮。为此,我发现了canGoForwardcanGoBack函数 QWebEngineHistory中的一个。但是,仅在历史记录中至少包含三个项目之后,这些函数才会返回True。通常,浏览器会在访问第二个不同页面后立即工作。

这应该像那样工作吗?我有什么办法可以将其更改为2个网页吗?我看过QWebEnginesettings,但与此无关。

这是一个可行的示例:

#!/usr/bin/python

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (QApplication,QLineEdit,QMainWindow,QPushButton,qtoolbar)
from PyQt5.QtWebEngineWidgets import QWebEnginePage,QWebEngineView


class Example(QMainWindow):

    def __init__(self):
        super(Example,self).__init__()

        self.initUI()


    def initUI(self):

        self.toolBar = qtoolbar(self)
        self.addToolBar(self.toolBar)

        self.backBtn = QPushButton(self)
        self.backBtn.setEnabled(False)

        self.backBtn.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/left-32.png'))
        # self.backBtn.setIcon(QIcon('stock_left.png'))
        self.backBtn.clicked.connect(self.back)
        self.toolBar.addWidget(self.backBtn)

        self.forBtn = QPushButton(self)
        self.forBtn.setEnabled(False)
        # self.forBtn.setIcon(QIcon('stock_right.png'))
        self.forBtn.setIcon(QIcon(':/qt-project.org/styles/commonstyle/images/right-32.png'))

        self.forBtn.clicked.connect(self.forward)
        self.toolBar.addWidget(self.forBtn)

        self.address = QLineEdit(self)
        self.address.returnpressed.connect(self.load)
        self.toolBar.addWidget(self.address)

        self.webEngineView = QWebEngineView(self)
        self.setCentralWidget(self.webEngineView)

        self.webEngineView.page().urlChanged.connect(self.onLoadFinished)

        print(self.webEngineView.history().backItem().url())
        print(self.webEngineView.history().forwardItem().url())

        self.setGeometry(300,300,500,400)
        self.setwindowTitle('QWebEnginePage')
        self.show()

        # self.webEngineView.page().urlChanged.connect(self.urlChanged)

    def onLoadFinished(self):

        print(dir(self.webEngineView.history()))
        print('load finished')
        # print(self.webEngineView.history().backItem().url())
        # print(self.webEngineView.history().forwardItem().url())
        # print(self.webEngineView.history().backItem())
        # print(self.webEngineView.history().forwardItem())
        # print(self.webEngineView.history().count())
        # print(self.webEngineView.history().items())
        # print(self.webEngineView.history().canGoForward())
        # print(self.webEngineView.history().canGoBack())

        if self.webEngineView.history().canGoBack():
            self.backBtn.setEnabled(True)
        else:
            self.backBtn.setEnabled(False)

        if self.webEngineView.history().canGoForward():
            self.forBtn.setEnabled(True)
        else:
            self.forBtn.setEnabled(False)


    def load(self):

        url = QUrl.fromUserInput(self.address.text())

        if url.isValid():
            self.webEngineView.load(url)

    def back(self):
        self.webEngineView.page().triggerAction(QWebEnginePage.Back)

    def forward(self):
        self.webEngineView.page().triggerAction(QWebEnginePage.Forward)

    def urlChanged(self,url):
        self.address.setText(url.toString())


def main():

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。