2012-09-18 68 views

回答

2

您的腳本的問題僅僅是沒有可以捕獲事件的窗口。

您必須首先創建並初始化一個帶有pygame.display.set_mode的窗口。

import pygame 

pygame.init() 

# create a window that will capture the events 
pygame.display.set_mode((200, 200)) 

running = 1 
while(running): 
    for event in pygame.event.get(): 
     if event.type == pygame.KEYDOWN: 
     if event.key == pygame.K_ESCAPE: 
      print "hi" 
      running = 0 
2

嘗試以下操作:

import pygame, sys 

pygame.init() 
pygame.mixer.init(22050, -16, 2, 3072) 
pygame.mixer.music.load("Kundara_Lake-of-Dust-320.mp3") 
pygame.mixer.music.play(1, 0.0) 

running = 1 
while(running): 
    for event in pygame.event.get(): 
     if event.type == pygame.KEYDOWN: 
     if event.key == pygame.K_ESCAPE: 
      pygame.mixer.music.stop() 
      pygame.quit() 
      running = 0 

http://www.pygame.org/docs/ref/pygame.html

pygame.quit

未初始化先前已初始化所有pygame的模塊。當Python解釋器關閉時,不管這個方法是什麼,所以你的程序不應該需要它,除非它想要終止它的pygame資源並繼續。多次調用此函數是安全的:重複調用不起作用。

請注意,pygame.quit不會退出您的程序。考慮讓你的程序以一個普通的Python程序結束的方式結束。

由於while(1),您正循環無限地撥打pygame.quit()

+0

不幸的是沒有問題,我把程序簡化爲while循環(用你的「跑步」建議),而它所做的只是當你打印「hi」按Escape。但它仍然只是做無限循環沒有結果的事情。沒有發生,直到你手動結束程序。 – Aerovistae

+0

我編輯澄清。 – Aerovistae

+1

我認爲你需要一個窗口捕獲輸入 –

0

您需要更新屏幕。與

screen = pygame.display.set_mode((640,360),0,32) 

嘗試,並在循環,寫

pygame.dispay.flip() 

完全關閉窗口,你可以使用

sys.exit() 

只是一定要在您的進口

SYS
0

pygame無法識別術語「輸入」或「打印」。如果它確實會更簡單!相反,要在屏幕上顯示文本,您必須使用'drawText('message',font,surface,(xpos,ypos)將您自己的文本放在'message'中,您自己的曲面名稱放在'surface'中,x和y 「xpos」和「ypos」中的座標