python - 如何通过 Python 访问数位板数据?

标签 python tablet surface stylus-pen

我需要通过 Python 访问 Windows 平板电脑笔数据(例如表面)。我主要需要位置、压力和倾斜值。

我知道如何访问 Wacom 笔数据,但 windows 笔不同。

有一个名为 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()

有精彩processing名为 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 访问数位板数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54003194/

相关文章:

html - 如何强制标签为视口(viewport)的宽度?

android - 阻止所有关闭安卓应用程序的方式

c++ - 如何在 Windows 7 平板设备中使用 C++ 调出屏幕键盘?

matlab - 如何在 MATLAB 中绘制(冲浪)矢量化(矩阵形)方程?

python - 在python中使用网格上的法线创建曲面点

python - Rpy2 在安装时找不到我的 R 库

python - Scrapy Spider - 响应回调中的循环不迭代

亚马逊简单电子邮件服务的 Python API

python - 通过 starttls 方法从 smtplib 登录到旧电子邮件服务器

delphi - 如何在 Delphi 中为 Microsoft Surface Pen 编程?