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