python - 如何通过 Python 访问数位板笔数据?
问题描述
我需要通过 Python 访问 Windows 数位板笔数据(例如表面)。我主要需要位置、压力和倾斜值。
我知道如何访问 Wacom 笔数据,但 windows pen 是不同的。
有一个名为Kivy的 Python 库可以处理多点触控,但它会将我的笔识别为手指 (WM_TOUCH) 而不是笔 (WM_PEN)。
这是我的 Kivy 代码(不报告压力和倾斜):
from kivy.app import App
from kivy.uix.widget import Widget
class TouchInput(Widget):
def on_touch_down(self, touch):
print(touch)
def on_touch_move(self, touch):
print(touch)
def on_touch_up(self, touch):
print("RELEASED!",touch)
class SimpleKivy4(App):
def build(self):
return TouchInput()
有一个名为Tablet的出色处理库,它仅适用于具有简单 API 的 Wacom 数位板(例如,)tablet.getPressure()
我需要这样的东西。
解决方案
如果您想查看设备:
import pyglet
pyglet.input.get_devices()
如果您想查看设备控件:
tablets = pyglet.input.get_devices() #tablets is a list of input devices
tablets[0].get_controls() #get_controls gives a list of possible controls of the device
现在来获取数据。我有一个 xp-pen g640 平板电脑,没有倾斜传感器,但如果你有它,修改代码很容易:
if tablets:
print('Tablets:')
for i, tablet in enumerate(tablets):
print(' (%d) %s' % (i , tablet.name))
i = int(input('type the index of the tablet.'))
device = tablets[i]
controls = device.get_controls()
df = pd.DataFrame()
window = pyglet.window.Window(1020, 576)
# Here you will have to write a line like "control_tilt_x = controls[j]" where j is
# the controls list index of the tilt control.
control_presion = controls[7]
Button = controls[3]
control_x =controls[5]
control_y =controls[6]
control_punta = controls[4]
control_alcance = controls [0]
name = tablets[9].name
try:
canvas = device.open(window)
except pyglet.input.DeviceException:
print('Failed to open tablet %d on window' % index)
print('Opened %s' % name)
@control_presion.event
def on_change(presion):
global df
df_temp = pd.DataFrame({'x':[control_x.value/(2**15)],
'y':[control_y.value/(2**16)],
'p':[control_presion.value/8],
't':[time.time()]})
df = pd.concat([df,df_temp])
pyglet.app.run()
推荐阅读
- python - Python/MySQL:在插入行之前和之后使用 cursor.rowcount
- r - 与分类变量的相似度矩阵
- r - 如何将数据帧子集化直到点 R
- php - 使用引导程序显示数据库中的图像
- sql-server - 如何优化这个存储过程?
- php - MYSQL 更新语句不起作用,没有相关的错误
- loops - 回归循环并将特定系数存储在新数据集中(Stata)
- python - 无法在 python 烧瓶中导入 MySQLdb,找不到符号:_syslog$DARWIN_EXTSN
- java - 不推荐使用 Gradle 复制命令,中断构建
- asp.net - 'SqlConnection' 未声明为 aspx 网络错误