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

时间:2013-11-22 14:55:44

标签: python mouse pygame

我正在使用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()时是这样)并且它也不能默认为之前的鼠标点击;有时它会在循环的几次迭代后发生。无论哪种方式,实验都是灾难性的。

1 个答案:

答案 0 :(得分:1)

试试这个:

...
while 1:
    dispEnd = time.time()
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN: 
            #do something           
    ...