繁体   English   中英

pygame.mouse.get_pressed()报告未点击鼠标时的点击

[英]`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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM