Python 3.x 对于pygame.event.get()中的事件:不工作
我有以下代码:Python 3.x 对于pygame.event.get()中的事件:不工作,python-3.x,pygame,Python 3.x,Pygame,我有以下代码: while OS_ON: for event in pygame.event.get(): if event.type == pygame.QUIT: OS_ON = False if event.type == pygame.MOUSEBUTTONDOWN: x, y = pygame.mouse.get_pos() if x > 63 and x < 143 and y > 298 and y
while OS_ON:
for event in pygame.event.get():
if event.type == pygame.QUIT:
OS_ON = False
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if x > 63 and x < 143 and y > 298 and y < 378:
Calculator = True
while Calculator:
for event in pygame.event.get():
if event.type == pygame.QUIT:
OS_ON = False
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if x > 180 and x < 218 and y > 670 and y < 708:
Calculator = False
操作系统打开时的:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
OS_ON=False
如果event.type==pygame.MOUSEBUTTONDOWN:
x、 y=pygame.mouse.get_pos()
如果x>63,x<143,y>298,y<378:
计算器=真
而计算器:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
OS_ON=False
如果event.type==pygame.MOUSEBUTTONDOWN:
x、 y=pygame.mouse.get_pos()
如果x>180,x<218,y>670,y<708:
计算器=假
在我的第一个循环中,pygame.event.get()中事件的
:
起作用,但当我在第二个循环中再次使用它时,我就不再起作用了。您知道如何修复它,使其在booth循环中工作。在Python3.x中,pygame.event.get()
是一个生成器,因此一旦您从中检索到一个值,它就永远消失了。您可以先尝试将其内容保存到列表中:
while OS_ON:
events = list(pygame.event.get())
for event in events:
if event.type == pygame.QUIT:
OS_ON = False
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if x > 63 and x < 143 and y > 298 and y < 378:
Calculator = True
while Calculator:
for event2 in events: # 'event' is used in the outer loop
if event2.type == pygame.QUIT:
OS_ON = False
if event2.type == pygame.MOUSEBUTTONDOWN:
x, y = pygame.mouse.get_pos()
if x > 180 and x < 218 and y > 670 and y < 708:
Calculator = False
操作系统打开时的:
events=list(pygame.event.get())
对于事件中的事件:
如果event.type==pygame.QUIT:
OS_ON=False
如果event.type==pygame.MOUSEBUTTONDOWN:
x、 y=pygame.mouse.get_pos()
如果x>63,x<143,y>298,y<378:
计算器=真
而计算器:
对于events中的event2:#“event”用于外部循环
如果event2.type==pygame.QUIT:
OS_ON=False
如果event2.type==pygame.MOUSEBUTTONDOWN:
x、 y=pygame.mouse.get_pos()
如果x>180,x<218,y>670,y<708:
计算器=假
但是如果你真的需要做这样的事情,那么你真的需要重新设计你的代码,使它在每一帧中只使用一个
pygame.event.get()
。当你发现自己在pygame.event.get():中重复类似的行时,您可能应该考虑以更基本的方式重构代码。例如,创建函数而不是一个大的嵌套循环。@jDo你能给我一个函数的例子吗?上面有多个pygame问题,可以做类似的事情,并包含很多漂亮的代码。搜索就会发现。缩进是错误的。你的解释是错误的。为Python3.x发布时,pygame.event.get()
没有任何变化。它仍然返回一个简单的列表。啊,我确实看到了我自己,看起来你是对的。可能pygame.event.get()
刷新列表后返回列表;就像使用SDL\u PumpEvents()
时发生的情况一样。如果你知道那可能是什么,如果你能分享你的知识,我将不胜感激。