Python/Pygame:如何用KEYUP事件打破KEYDOWN事件启动的while循环?
我正在开发一个应用程序,它允许用户从3个不同的变量(R、G、B)中进行加减。然后,这些变量的值将被处理并用于在屏幕上绘制它们所代表的各自颜色的图片 为了实现这一点,我实现了六个不同的键来处理这个操作:q、w、e和a、s、d。前三个用于向分配的变量中添加,后三个用于从相同的分配变量中减去 我已经成功地完成了这一点,但我不想按一个键最多255次以获得最大值,而是想实现某种循环,只要按下一个键,循环就会继续,然后在不再按下一个键时停止 有关守则如下:Python/Pygame:如何用KEYUP事件打破KEYDOWN事件启动的while循环?,python,loops,user-interface,colors,pygame,Python,Loops,User Interface,Colors,Pygame,我正在开发一个应用程序,它允许用户从3个不同的变量(R、G、B)中进行加减。然后,这些变量的值将被处理并用于在屏幕上绘制它们所代表的各自颜色的图片 为了实现这一点,我实现了六个不同的键来处理这个操作:q、w、e和a、s、d。前三个用于向分配的变量中添加,后三个用于从相同的分配变量中减去 我已经成功地完成了这一点,但我不想按一个键最多255次以获得最大值,而是想实现某种循环,只要按下一个键,循环就会继续,然后在不再按下一个键时停止 有关守则如下: def main(): global ke
def main():
global keypressed
while True:
#Displays current coordinates of mouse
mouseText=str(pygame.mouse.get_pos())
mousecoordstext = font.render('(X,Y) - '+ mouseText + ' ', 1, (black), (gray5))
Surface.blit(mousecoordstext, (155,105))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
keypressed = True #A key is being pressed, initiate loop after figuring out what key it was
if event.key == K_ESCAPE:
pygame.quit
sys.exit()
#Variable Explanations
#changeType: indicates either subtraction or addition to variable
#color: indicates what color is being changed
if event.key == K_q:
changeType = 1
color = 1
elif event.key == K_a:
changeType = 0
color = 1
elif event.key == K_w:
changeType = 1
color = 2
elif event.key == K_s:
changeType = 0
color = 2
elif event.key == K_e:
changeType = 1
color = 3
elif event.key == K_d:
changeType = 0
color = 3
if event.type == KEYUP:
keypressed = False #A key is no longer being pressed
#The loop in question is below
while keypressed:
if keypressed == False: #When a key is no longer being pressed
break
else:
Color_Update(changeType, color)#Calculate color changes
Color_Draw(red, green, blue)#Draw the new color
pygame.display.update()
main()
我怀疑我需要在while循环中检查pygame事件?我不知道如何实现这一点,但是
很抱歉,我可能会问一个类似的问题,但是看了很多像这样的问题对我来说都没有结果,所以我决定自己问,因为我觉得这与我的情况不同。你不需要为此开始第二个循环。在主循环中,只需检查keypressed是否仍然为true,并将更改应用于变量。颜色变化效果应一次又一次地重复,直到记录了按键事件。
因此,您的主循环如下所示:
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
keypressed = True
#Set your changetype and color variables
if event.type == KEYUP:
keypressed = False;
if keypressed:
Color_Update(changeType, color)
Color_Draw(red, green, blue)
pygame.display.update()
一如既往,请确保调整帧速率,以便以合理的速度进行此操作。非常感谢我不敢相信我的问题有这么简单的答案。我真的想得太多了。再次感谢!