我的程序仅做两件事:
1)每当我将鼠标悬停在两个图像之一上时,它就会打印单词“ hello”(任何人,以任何顺序)
2)在关闭时,当我通过按ESC或鼠标关闭窗口时
import pygame,sys ,os,random,math
from pygame.locals import *
pygame.init()
white=(255,255,255)
black=(0,0,0)
WINDOWWIDTH = 1680
WINDOWHEIGHT =1050
mousex, mousey=0,0
screen=pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT))
ticket=pygame.image.load(os.path.join('imag','ticket.png'))
ticket2=pygame.image.load(os.path.join('imag','ticket2.png'))
def terminate():
pygame.quit()
sys.exit()
def checkForQuit():
for event in pygame.event.get(QUIT): # get all the QUIT events
terminate() # terminate if any QUIT events are present
for event in pygame.event.get(KEYUP): # get all the KEYUP events
if event.key == K_ESCAPE:
terminate() # terminate if the KEYUP event was for the ESc key
pygame.event.post(event)
tic1=ticket.get_rect(topleft=(50,770))
tic2=ticket2.get_rect(topleft=(220,770))
List_of_tickets=[tic1,tic2]
while 1:
screen.fill(white)
checkForQuit()
screen.blit(ticket,(50,770))
screen.blit(ticket2,(220,770))
for tic in List_of_tickets:
if tic.collidepoint(pygame.mouse.get_pos()):
print 'Hello !'
pygame.display.update()
问题是第二部分不起作用!
因此,如果我将鼠标悬停在一张票上-一切都很好。我说了“你好”,如果需要我可以关闭窗户。但是,如果我将鼠标悬停在一张票上,然后将鼠标悬停在第二张票上(所以我得到了更多的“ Hello”信息-那很好)-我无法退出程序,ESC或鼠标。
似乎戒烟事件已停止处理。
问题是:
1)我在处理Pygame中的事件时不了解什么?
2)无论如何我应该做些什么使我的代码退出?
在文档中:“如果仅从队列中提取特定事件,请注意,队列最终可能会填充您不感兴趣的事件。”
在那里扔pygame.event.clear(),看看会发生什么。
(如果是这样,则只有当您同时进入两个故障单时才会失败的原因是,所有鼠标移动都会添加一个事件;移动到一个故障单不会完全填满队列,但是移动到两个故障单都可以。稍微摇动鼠标将具有相同的效果。影响。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句