我有以下代码:
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
在我的第一个循环中for event in pygame.event.get():
有效,但是当我在第二个循环中再次使用它时,我不再工作了。你知道怎么修理它所以它在展位循环中工作。
答案 0 :(得分:0)
在python 3.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
但是如果你真的需要做这样的事情,那么你真的需要重新设计你的代码,这样它每帧只能使用一个pygame.event.get()
。