Pyglet开发白板应用时数位板输入产生意外打印如何停止
问题解决方法
原因说明
该打印输出不属于你编写代码的逻辑,是Pyglet部分版本(尤其是1.5.x系列的开发/测试版本)数位板输入模块内置的未移除调试代码,检测到笔悬停时输出0,按压时输出1。
解决方案
- 方案1(最推荐):关闭输入调试开关
在导入pyglet之后的首行添加如下配置,即可直接关闭所有输入相关的调试输出:
该方案无副作用,不需要修改框架源码。import pyglet pyglet.options['debug_input'] = False - 方案2:修复硬编码打印逻辑
如果方案1不生效,说明你使用的Pyglet版本将调试打印直接硬编码在了数位板实现逻辑中:- 优先升级到Pyglet 2.0+稳定版,该问题已经被官方修复
- 若不方便升级,可手动进入Pyglet安装目录的
pyglet/input路径下,找到对应平台的数位板驱动文件,搜索删除print(0)、print(1)语句即可
代码优化提示
你目前的代码存在两处可修正的逻辑问题:
on_motion事件中修改全局变量is_pen_drawing没有加global声明,在部分Python版本中会报错- 压力为0的else分支仍然将
is_pen_drawing设为True,会导致笔离开数位板后仍然判定为绘画状态
修正后的on_motion逻辑如下:
@tablet.event def on_motion(cursor, x, y, pressure, a, b): global is_pen_drawing if pressure > 0: is_pen_drawing = True points.append((x, y)) else: is_pen_drawing = False points.append(None)
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

