簡體   English   中英

滿足條件后如何更新pygame窗口顯示?

[英]How to update pygame window display after condition is met?

我有一些 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 輸入框。 在用戶輸入必要的東西並確認輸入有效后,該函數返回狀態(如果假用戶正確輸入了詳細信息)。 發生這種情況后,我想更改窗口顯示的內容並顯示完全不同的內容。 “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()

並將其放在第二個按鈕功能之后但不起作用。 有任何想法嗎?

對於 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM