Есть несколько проблем с кодом, который вы разместили. Во-первых, вы импортируете и PySide, и PyQt4, что не очень хорошая идея. Во-вторых, QWebView.linkClicked
- это сигнал, а не защищенный метод, поэтому вы не можете его переопределить. В-третьих, вы передаете строку в QWebView.load
, когда вы должны передавать QtCore.QUrl
.
Однако, помимо этих проблем, вам также необходимо установить linkDelegationPolicy на веб-странице, чтобы переопределить обработку ссылок.
Вот отредактированная версия вашего кода, которая должна решить все проблемы:
from PySide import QtCore, QtGui, QtWebKit
class BrowserWindow(QtWebKit.QWebView):
def __init__(self, parent=None):
super(BrowserWindow, self).__init__()
self.linkClicked.connect(self.handleLinkClicked)
def handleLinkClicked(self, url):
print(url.toString())
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
view = BrowserWindow()
view.load(QtCore.QUrl("http://google.com"))
view.page().setLinkDelegationPolicy(
QtWebKit.QWebPage.DelegateAllLinks)
view.show()
sys.exit(app.exec_())