满足条件后如何更新pygame窗口显示?

2024-04-25 23:12:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些pygame窗口的代码:

while True:
    try:
        gameDisplay.fill(white)
        mouse = pygame.mouse.get_pos()
        click = pygame.mouse.get_pressed()
    except Exception:
        pass 

    a=button("Enter",100,150,100,50,darkgreen,green,"play")
    button("Exit",450,150,100,50,darkred,red,"quit")

    for event in pygame.event.get() :
        if event.type == pygame.QUIT :
            pygame.quit()
    pygame.display.update()
    #if a == False:
        #pygame.quit()
    

它显示2个可单击的按钮(由按钮功能创建)。单击绿色按钮时,会出现tkinter输入框。用户输入必要的内容并确认输入有效后,函数返回状态(如果false用户正确输入了详细信息)。发生这种情况后,我想更改窗口显示的内容,并显示完全不同的内容。“a”(状态)的最初目的是在验证输入后关闭窗口并打开新窗口,但是在研究之后,我发现不能在同一脚本中打开两个窗口

我试过这个:

if a == False:
        gameDisplay.fill(white)
        gameDisplay.blit(image1, (50, 0))
        gameDisplay.blit(image2, (50, 100))
        gameDisplay.blit(image3, (50, 200))
        gameDisplay.blit(image4, (50, 300))
        gameDisplay.blit(image5, (120, 100))
        gameDisplay.blit(image6, (120, 200))
        gameDisplay.blit(image7, (130, 260))
        gameDisplay.blit(image8, (130, 290))
        gameDisplay.blit(image9, (130, 320))
        gameDisplay.blit(text, (0,0))
        gameDisplay.blit(text2, (200,385))
        gameDisplay.blit(text3, (200,369))
        gameDisplay.blit(text4, (300,25))
        gameDisplay.blit(text5, (300,100))
        gameDisplay.blit(image16, (300, 45))
        gameDisplay.blit(image17, (350, 45))
        gameDisplay.blit(text6, (300, 170))
        gameDisplay.blit(image10, (300, 120))
        gameDisplay.blit(image11, (350, 120))
        gameDisplay.blit(image12, (400, 120))
        gameDisplay.blit(image13, (450, 120))
        gameDisplay.blit(image14, (500, 120))
        gameDisplay.blit(image15, (550, 120))
        gameDisplay.blit(image19, (300, 190))
        gameDisplay.blit(image20, (350, 190))
        pygame.display.update()

并将其放置在第二个按钮功能之后,但不起作用。有什么想法吗


Tags: event内容getifdisplayupdatebuttonfill
1条回答
网友
1楼 · 发布于 2024-04-25 23:12:33

对于Pygame,尝试停留在单个循环中。根据情况,显示按钮或玩游戏

请尝试以下代码:

a = True  # show buttons
while True:        
    try:
        gameDisplay.fill(white)
        mouse = pygame.mouse.get_pos()
        click = pygame.mouse.get_pressed()
    except Exception:
        pass  

    if a == True:  # keep showing buttons until user clicks one
        a=button("Enter",100,150,100,50,darkgreen,green,"play")
        button("Exit",450,150,100,50,darkred,red,"quit")
        
    if a == False:  # run game
            gameDisplay.fill(white)
            gameDisplay.blit(image1, (50, 0))
            ...........
            gameDisplay.blit(image19, (300, 190))
            gameDisplay.blit(image20, (350, 190))
            
    for event in pygame.event.get() :
        if event.type == pygame.QUIT :
            pygame.quit()
    pygame.display.update()
    #if a == False:
        #pygame.quit()

    pygame.display.update()

相关问题 更多 >