[英]`pygame.mouse.get_pressed()` reports clicks when mouse is not clicked
我正在使用Python 2.7上的Pygame 1.9.2进行实验。 在实验中,我显示图像,并要求用户根据图像的特征单击鼠标左键或鼠标右键(我会事先指示他们何时单击内容)。 图像一直显示到用户单击为止,或者图像显示的时间超过固定的持续时间。
这是代码段(希望此位足以了解正在执行的操作。)
pygame.display.update()
resp = None
while 1:
dispEnd = time.time()
pygame.mouse.set_visible(True)
pygame.event.get()
ms = pygame.mouse.get_pressed()
if ms[0] or ms[2]:
rt = dispEnd - dispSt
if ms[0]:
resp = 'Yes'
else:
resp = 'No'
break
if dispEnd - dispSt >= changeDuration:
break
这段代码是一个较大的循环的一部分,在该循环中选择并显示了一个图像,因此它运行了几次。
在不可预测的时间发生的是该程序不等待用户输入。 在显示图像之后,它立即进入while循环并继续进行,就像按下鼠标一样。
这是一个随机错误,随时可能发生; 有时恰好在程序开始时,从循环的第一次运行开始; 因此,可能不是因为可能没有清除事件队列(在调用pygame.event.get()
),而且也不能默认使用鼠标的前一个单击; 有时会在循环几次迭代后发生。 无论哪种方式,对于实验来说都是灾难性的。
试试看:
...
while 1:
dispEnd = time.time()
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
#do something
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.