【问题标题】:Why don't work linkClicked, and works linkHovered PyQt4?为什么不工作linkClicked,工作linkHovered PyQt4?
【发布时间】:2016-08-26 18:41:33
【问题描述】:

这是一些代码。我创建了模态窗口,设置了简单的 html,然后我想在点击链接上连接一些方法。信号“linkClicked”不起作用,但已加载链接。并且信号 linkHovered 有效。错在哪里?以及如何在“linkClicked”中包含一些方法?

# -*- coding: utf-8 -*-
import sys

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4 import QtWebKit

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(1000, 500)
        self.menu_bar = self.menuBar()
        self.menuEngine()
    def menuEngine(self):
        self.podmenu2 = self.menu_bar.addMenu("Help")
        self.about = QtGui.QAction("About", self )
        self.about.setIconVisibleInMenu(True)
        self.podmenu2.addAction(self.about)
        self.about.triggered.connect(self.aboutView)
    def aboutView(self):
        def clicks(url):
            print("DDD")
            print(url)
        mod_window = QtGui.QWidget(self, QtCore.Qt.Window)
        mod_window.setWindowTitle("About")
        mod_window.resize(500, 332)
        horLayout = QtGui.QHBoxLayout(mod_window)
        localHtmls = QtWebKit.QWebView()

        localHtmls.setHtml("""
            <html>
            <head>
                <meta charset="utf-8"/>
            </head>
            <body>
                <div>
                    <br/>
                    Home page <a href="https://google.com">LINK</a>
                </div>
            </body>
            </html>
        """)
        horLayout.addWidget(localHtmls)

        localHtmls.linkClicked.connect(clicks)
        #localHtmls.page().linkHovered.connect(clicks)
        mod_window.show()

if __name__ == "__main__":
     app = QtGui.QApplication(sys.argv)
     windows = MainWindow()
     windows.show()
     sys.exit(app.exec_())

【问题讨论】:

    标签: python pyqt4 qtwebkit qwebview


    【解决方案1】:

    来自linkClicked 的文档:

    每当用户点击一个链接并且 页面的 linkDelegationPolicy 属性设置为委托链接 处理指定的url。

    那就试试吧:

    localHtmls.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
    

    但请注意,这完全绕过了正常的链接点击处理,因此您必须自己实现(例如调用 load(url))。

    【讨论】:

    • 谢谢,这是我需要的)))
    猜你喜欢
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2013-07-01
    • 2017-07-28
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多