python – 是否有可能在QWebView上人为触发mousePressEvent?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 是否有可能在QWebView上人为触发mousePressEvent?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1281字,纯文字阅读大概需要2分钟。
内容图文
![python – 是否有可能在QWebView上人为触发mousePressEvent?](/upload/InfoBanner/zyjiaocheng/827/880ba6feaaae4e759a5783d1788feb3e.jpg)
Due to an astronomically atrocious bug on PyQt4,我需要在QWebView上人工触发一个mousePressEvent作为最后一口希望.由于某些模糊的原因,当点击的链接涉及Javascript时(例如,它不适用于Youtube视频)以及使用鼠标左键单击链接时,QWebView的linkClicked和urlChanged信号不会传递QUrl.使用中间和右侧按钮单击链接时,可以完美访问QUrl.
class CQWebView(QtWebKit.QWebView):
def mousePressEvent(self, event):
if type(event) == QtGui.QMouseEvent:
if event.button() == QtCore.Qt.LeftButton:
# FIRE A QtCore.Qt.MiddleButton EVENT HERE,
# SO THAT I CAN GET THE BLOODY LINK AFTERWARDS.
elif event.button() == QtCore.Qt.MiddleButton:
self.emit(QtCore.SIGNAL("OPEN_IN_NEW_TAB")) # Example
elif event.button() == QtCore.Qt.RightButton:
self.emit(QtCore.SIGNAL("XXX")) # Example
所以,我真的想“人为点击”,点击而不点击,只需用链接上的中间右键触发点击事件,这样我就可以正确地捕捉到QUrl.
最佳答案:
您也可以使用QtTest模块来完成.在Web视图上设置事件过滤器,检查左键单击鼠标事件并发送鼠标中键
def __init__(...)
self.ui_web_view.installEventFilter(self)
def eventFilter(self, obj, event):
if obj == self.ui_web_view:
if event.type() == QtCore.QEvent.MouseButtonPress:
if event.button() == QtCore.Qt.LeftButton:
print 'Handled'
QtTest.QTest.mouseClick(self.ui_web_view, QtCore.Qt.MiddleButton, QtCore.Qt.NoModifier, event.pos())
return True
return False
内容总结
以上是互联网集市为您收集整理的python – 是否有可能在QWebView上人为触发mousePressEvent?全部内容,希望文章能够帮你解决python – 是否有可能在QWebView上人为触发mousePressEvent?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。