2024-06-17 08:45:18 发布
网友
Wacom没有官方的pythonsdk。 不过,PyQt有一个QTabletEvent来处理这些平板电脑。在
唉,我没有找到这方面的python示例。在
我们可以看到一个c++示例here。在
有人能给我举一个python的例子吗?在
我这样做是为了我的WACOM Intoos艺术平板电脑:
只需继承一个QWidget类并定义tabletEvent()方法来处理接收到的QTabletEvent事件。在
别忘了打电话给平板电脑tabletEvent.accept()方法位于处理程序末尾。在
示例:
(处理TabletPress、tabletreease和TabletMove事件) 当笔接触平板电脑表面时,生成TabletPress事件,当笔离开平板电脑表面时生成TabletRelease事件。 在这些事件之间生成一个TabletMove事件流。在
对于每个接收到的QTabletEvent,您将得到笔的位置和笔的压力。(我的平板电脑上没有倾斜信息)
请注意,我不得不将示例窗口调整为完全桌面大小,以便从整个平板电脑表面获取表事件。我不知道如何从平板电脑的所有表面捕捉事件,将其映射到widget客户端表面,如果它没有调整到完全的桌面大小。(对此问题的任何帮助都将得到极大的重视。)
import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class TabletSampleWindow(QWidget): def __init__(self, parent=None): super(TabletSampleWindow, self).__init__(parent) self.pen_is_down = False self.pen_x = 0 self.pen_y = 0 self.pen_pressure = 0 self.text = "" # Resizing the sample window to full desktop size: frame_rect = app.desktop().frameGeometry() width, height = frame_rect.width(), frame_rect.height() self.resize(width, height) self.move(-9, 0) self.setWindowTitle("Sample Tablet Event Handling") def tabletEvent(self, tabletEvent): self.pen_x = tabletEvent.globalX() self.pen_y = tabletEvent.globalY() self.pen_pressure = int(tabletEvent.pressure() * 100) if tabletEvent.type() == QTabletEvent.TabletPress: self.pen_is_down = True self.text = "TabletPress event" elif tabletEvent.type() == QTabletEvent.TabletMove: self.pen_is_down = True self.text = "TabletMove event" elif tabletEvent.type() == QTabletEvent.TabletRelease: self.pen_is_down = False self.text = "TabletRelease event" self.text += " at x={0}, y={1}, pressure={2}%,".format(self.pen_x, self.pen_y, self.pen_pressure) if self.pen_is_down: self.text += " Pen is down." else: self.text += " Pen is up." tabletEvent.accept() self.update() def paintEvent(self, event): text = self.text i = text.find("\n\n") if i >= 0: text = text.left(i) painter = QPainter(self) painter.setRenderHint(QPainter.TextAntialiasing) painter.drawText(self.rect(), Qt.AlignTop | Qt.AlignLeft , text) app = QApplication(sys.argv) mainform = TabletSampleWindow() mainform.show() app.exec_()
我这样做是为了我的WACOM Intoos艺术平板电脑:
只需继承一个QWidget类并定义tabletEvent()方法来处理接收到的QTabletEvent事件。在
别忘了打电话给平板电脑tabletEvent.accept()方法位于处理程序末尾。在
示例:
(处理TabletPress、tabletreease和TabletMove事件) 当笔接触平板电脑表面时,生成TabletPress事件,当笔离开平板电脑表面时生成TabletRelease事件。 在这些事件之间生成一个TabletMove事件流。在
对于每个接收到的QTabletEvent,您将得到笔的位置和笔的压力。(我的平板电脑上没有倾斜信息)
请注意,我不得不将示例窗口调整为完全桌面大小,以便从整个平板电脑表面获取表事件。我不知道如何从平板电脑的所有表面捕捉事件,将其映射到widget客户端表面,如果它没有调整到完全的桌面大小。(对此问题的任何帮助都将得到极大的重视。)
相关问题 更多 >
编程相关推荐