Pygame点击事件与PITFT兼容吗?是否有专门为此制作的事件?
我做了一个pygame的图形界面,上面有按钮,用户点击按钮时会激活它们。这个界面在我用真实鼠标的时候运行得很好,但当我在PITFT上运行时,按钮却对点击没有反应(即使我用比手指更硬的东西,比如触控笔)。
请问Pygame的点击事件是否与PITFT兼容,还是说它有一些“特殊”的事件需要处理?
这是我在代码中使用的当前鼠标事件:
def run(self):
"""Lance la boucle principale pour gérer les événements"""
while True:
event = pygame.event.wait()
if event.type == MOUSEBUTTONDOWN and event.button == 1 and not self.keep_level_2:
self.click(event.pos)
elif event.type == MOUSEBUTTONUP and event.button == 1:
self.release(event.pos)
我在网上查了一下,发现要使用PITFT,需要添加以下几行代码:
os.environ['SDL_VIDEODRIVER'] = 'fbcon'
os.environ["SDL_FBDEV"] = "/dev/fb1"
os.environ["SDL_MOUSEDEV"] = "/dev/input/touchscreen"
os.environ["SDL_MOUSEDRV"] = "TSLIB"
我试着添加了这些代码,但触摸屏还是没有反应。
另外,当程序运行时,我无法退出它(CTRL+C和ESC都不管用)。
注意:我的代码不是在python3中运行的。
2 个回答
0
你有没有检查过你的 /dev/input/touchscreen 是否“链接”到了正确的模块?
可以试试用 evtest /dev/input/touchscreen 命令,看看在使用屏幕、键盘或者鼠标的时候,它有没有反应!
如果出现这种情况,你应该再按照安装步骤来操作一遍。
0
我觉得你遇到的问题是你在用一种“按下-抬起”的方式来处理按钮。
我让我的pygame图形界面正常工作的方法是...
click = pygame.mouse.get_pressed()
if x+w > mouse_pos[0] > x and y+h > mouse_pos[1] > y:
pygame.draw.rect(screen, ac,(x,y,w,h))
if click[0] == 1 and action != None:
action()
不过对我来说,这样做又产生了其他问题,因为我觉得在触摸屏上轻轻一碰并不是一个流畅的单击。对我来说,按钮会被点击,然后不知为何又会出现第二次“点击”(我觉得是因为点击时的“模糊”)。
结果是,我的“开启”按钮会被打开(它们工作得很好),然后又会关闭。对此我还不太确定该怎么处理,但希望这能让你的项目正常运行。