Javascript 在QWebView中处理QTabletEvents
我试图在QWebView中处理QTabletEvents。棘手的是,我需要用JavaScript处理这些事件:Javascript 在QWebView中处理QTabletEvents,javascript,qt,pyqt,pyqt5,Javascript,Qt,Pyqt,Pyqt5,我试图在QWebView中处理QTabletEvents。棘手的是,我需要用JavaScript处理这些事件: canvas.on("mousemove", function () { // check if pen was used using PyQt! } 以及在PyQt中,为了检测事件是否由笔而不是鼠标触发: def tabletEvent(self, event): if event.type() == QEvent.TabletMove: event
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函数。