Javascript 在QWebView中处理QTabletEvents

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

我试图在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.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函数。