Python 检测QWebEngineView上的鼠标单击

Python 检测QWebEngineView上的鼠标单击,python,pyqt,pyqt5,qwebengineview,Python,Pyqt,Pyqt5,Qwebengineview,如何在QWebEngineView小部件中检测鼠标点击 我试过这个,但不起作用: class MyWin(QtWidgets.QMainWindow): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.ui.view.i

如何在QWebEngineView小部件中检测鼠标点击

我试过这个,但不起作用:

class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.view.installEventFilter(self)

    def eventFilter(self, obj, event):
        if event.type() == event.MouseButtonPress:
             print ("Widget click")
        return super(QtWidgets.QMainWindow, self).eventFilter(obj, event)

假设视图是QWebEngineView对象,并且您希望跟踪其鼠标事件,那么您应该使用focusProxy,这是一个处理这些类型事件的内部小部件。另一方面,您必须正确应用继承

classmywin(qtwidts.QMainWindow):
def uuu init uuu(self,parent=None):
超级(MyWin,self)。\uuuuu初始化\uuuuuuu(父级)
self.ui=ui\u主窗口()
self.ui.setupUi(self)
self.ui.view.focusProxy().installEventFilter(self)
def事件过滤器(自身、obj、事件):
如果obj是self.ui.view.focusProxy()和event.type()==event.mousebutton按下:
打印(“小部件单击”)
return super(MyWin,self).eventFilter(obj,event)

什么是
视图
?除此之外,为什么要在事件筛选器中使用带有QMainWindow参数的
super()
?视图是一个小部件类型“QWebEngineView”。我不知道为什么我使用super(),我只是复制它。抱歉,英语不好。我需要返回什么?问题不在于返回什么,而在于super的参数,它应该是当前类:
super(MyWin,self)
,或者在python 3的情况下,只是
super()
没有任何参数。谢谢帮助。我得到了以下错误:AttributeError:'NoneType'对象没有属性'installEventFilter'@Cliffhanger mmm,请尝试在
self.show()
self.ui.view.focusProxy()之前添加
self.ui.view.focusProxy().installEventFilter(self)
。如果它不起作用,那么您需要为Ui_MainWindow类提供代码来分析错误的原因谢谢您的帮助。我在UI_MainWindow类中发现错误,我没有在self.view中加载页面。在UI_MainWindow类中创建QWebEngineView之后,我添加了这一行:self.view.load(url),现在它可以工作了。感谢并为糟糕的英语感到抱歉。我还收到了错误:AttributeError:“NoneType”对象没有属性“installEventFilter”。除了使用focusProxy(),这里还有其他解决方法吗?@iMath尝试在self.ui.view.focusProxy().installEventFilter(self)之前添加self.show()和self.ui.view.show()