2012-09-18 80 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”中的坐标