这是用Python/PySide编写的。在
我试图通过重载PySide.QtWebKit.QWebView小装置。然后,每当有人点击widget上的链接时,我会检查是否要转到一个无效的网站,如果没有,我们继续,如果是,那么我会重定向到一个通用页面。在
所以我把PySide.QtWebKit.QWebView,但我没有收到链接被单击时的通知。我已经重写了linkClicked函数,但是当一个链接被点击时,这个函数从来没有运行过?
我做错什么了?为什么我的功能不能运行/响应超链接点击“事件”?我是否需要重写webpage对象而不是该类来响应链接单击?在
import PySide.QtWebKit
import sys
from PyQt4 import QtGui
class BrowserWindow( PySide.QtWebKit.QWebView ):
# Class Variables:
def __init__( self, _parent ):
""" Constructor: """
super(BrowserWindow, self).__init__()
PySide.QtWebKit.QWebView(None)
def linkClicked(self, arg__1):
""" Post: """
#print("LINK CLICKED")
#text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog',
# 'Enter your name:')
self.load("http://yahoo.com")
def main():
app = QtGui.QApplication(sys.argv)
view = BrowserWindow(None) #PySide.QtWebKit.QWebView(None)
view.load("http://google.com")
view.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
你发布的代码有几个问题。首先,您同时导入PySide和PyQt4,这不是一个好主意。其次,
QWebView.linkClicked
是一个信号,而不是一个受保护的方法,因此不能重写它。第三,您正在向QWebView.load
传递一个字符串,而您应该传递一个QtCore.QUrl
。在但是,除了这些问题之外,您还需要在web页面上设置linkDelegationPolicy,以便覆盖其链接处理。在
以下是您的代码的编辑版本,可以解决所有问题:
相关问题 更多 >
编程相关推荐