为什么 linkClicked 不起作用,而 linkHovered PyQt4 起作用?
Why don't work linkClicked, and works linkHovered PyQt4?
这是一些代码。我创建了模态 window,设置简单 html,然后我想在单击 link 时连接一些方法。信号 "linkClicked" 不工作,但 link 已加载。信号 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_())
来自 linkClicked 的文档:
This signal is emitted whenever the user clicks on a link and the
page's linkDelegationPolicy property is set to delegate the link
handling for the specified url.
所以尝试:
localHtmls.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
但请注意,这完全绕过了正常的 link-点击处理,因此您必须自己实施(例如调用 load(url)
)。
这是一些代码。我创建了模态 window,设置简单 html,然后我想在单击 link 时连接一些方法。信号 "linkClicked" 不工作,但 link 已加载。信号 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_())
来自 linkClicked 的文档:
This signal is emitted whenever the user clicks on a link and the page's linkDelegationPolicy property is set to delegate the link handling for the specified url.
所以尝试:
localHtmls.page().setLinkDelegationPolicy(QtWebKit.QWebPage.DelegateAllLinks)
但请注意,这完全绕过了正常的 link-点击处理,因此您必须自己实施(例如调用 load(url)
)。