2017-03-07 119 views
0

在這個循環中實際需要什麼來保持程序不停止響應?如何防止pygame應用程序停止響應

import pygame 

pygame.init() 
program_display = pygame.display.set_mode((600, 800),pygame.RESIZABLE 
             | pygame.DOUBLEBUF) 
program_display.fill((0, 0, 210)) 
while True: 
    pygame.display.flip() 

附加:

還有一個更復雜的腳本,其中一個退出選項位於另一個循環,在另一個進程/線程。顯示處理循環位於它自己的進程/線程中。如果可能的話,我怎麼能有幾個進程/線程運行,其中只有其中一個提供退出選項?

+0

嗯,這是一個無限循環,要避免這些。您需要添加一種方法來允許用戶退出。 –

+0

@SpencerWieczorek這是唯一的方法嗎?我編寫了更高級的程序,其中一些程序也有無限循環。所有工作的人都有辦法退出。這是我需要的嗎?我在這個循環中需要它嗎?我使用進程/線程,並且此選項位於另一個循環中。 – Andreas

+0

您的程序因爲不處理任何事件而掛起。你需要對'pygame.event'模塊中的函數進行某種調用。如果你不想處理事件,你應該調用'pygame.event.pump()'讓pygame處理一些需要的內部操作。更多信息[這裏](http://stackoverflow.com/documentation/pygame/5110/event-handling#t=201703080502410474434)。 –

回答

-1

您忘記了退出功能

import pygame,sys 
from pygame.locals import * 
pygame.init() 
program_display = pygame.display.set_mode((600, 800),pygame.RESIZABLE 
             | pygame.DOUBLEBUF) 
program_display.fill((0, 0, 210)) 
while True: 
    for event in pygame.event.get(): 
     if event.type==QUIT: 
      pygame.quit() 
      sys.exit() 
    pygame.display.flip() 
+0

當我已經使用'pygame.display.flip()'時,爲什麼要使用'pygame.display.update()'?另外,不應該''pygame.display.update()'在循環內? – Andreas

+0

這是因爲pygame.display.flip沒有保存,只能翻轉它。現在,你想讓pygame成爲一個GUI,而不是無法改變的圖片。這就是爲什麼你需要告訴pygame在特定時間更新。 – Shaark16

+0

我只是喜歡你的版本。它不會阻止我的腳本掛起。 – Andreas