我正在使用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()
时是这样)并且它也不能默认为之前的鼠标点击;有时它会在循环的几次迭代后发生。无论哪种方式,实验都是灾难性的。
答案 0 :(得分:1)
试试这个:
...
while 1:
dispEnd = time.time()
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
#do something
...