在QWebView中处理QTablet事件
Handle QTabletEvents inside QWebView
我正试图在QWebView中处理QTabletEvent。棘手的部分是,我需要在JavaScript:中处理这些事件
canvas.on("mousemove", function () {
// check if pen was used using PyQt!
}
以及在PyQt中,以检测事件是否由笔(而不是鼠标)触发:
def tabletEvent(self, event):
if event.type() == QEvent.TabletMove:
event.accept()
print("Pen used!")
// get this info back to javascript
有可能以某种方式让两者协同工作吗?
我终于解决了这样的问题:
import sys
from PyQt5.QtCore import QObject, pyqtSlot
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView
html = """
<html>
<body>
<h1><button onmousedown="foo()">Push me!</button></h1>
</body>
<script>
function foo() {
if(penDetector.isPenUsed()){
alert("Booya!");
}
}
</script>
</html>
"""
class TestView(QWebView):
class PenDetector(QObject):
def __init__(self, parent=None):
super().__init__(parent)
self.penUsed = False
@pyqtSlot(result=bool)
def isPenUsed(self):
return self.penUsed
def __init__(self, parent=None):
super().__init__(parent)
self.penDetector = self.PenDetector()
self.page().mainFrame().addToJavaScriptWindowObject("penDetector", self.penDetector)
def mousePressEvent(self, event):
self.penDetector.penUsed = False
super().mousePressEvent(event)
def tabletEvent(self, event):
self.penDetector.penUsed = True
super().mousePressEvent(event)
if __name__ == '__main__':
app = QApplication(sys.argv)
view = TestView()
frame = view.page().mainFrame()
view.setHtml(html)
view.show()
app.exec_()
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 只覆盖箭头键滚动事件
- $window.ga在AngularJS事件中未定义
- cron作业与Javascript计时事件
- 在QWebView中处理QTablet事件