2013-03-10 66 views
1

我正在編寫一個用戶輸入來編寫音樂的Pygame程序。它等待一個特定的事件(即鍵盤或鼠標輸入),並立即分析輸入,而無需用戶按下輸入每個條目。我如何讓我的程序等待輸入,而不處於循環中

while (running == 1): 
    for event in pygame.event.get(): 
# If event is a keypress 
     if(event.type == pygame.KEYDOWN): 
      key = pygame.key.get_pressed() # get_pressed returns an boolean array 
              # of every key showing pressed or not 
# Find which key is pressed 
      for x in range(len(key)): 
       if(key[x] == 1): 
        break 
# If a number key is pressed (0-9) 
      if(x >= 48 and x <=57): 
# Set the octave to keypress 
       gui.setOctave(x-48) # gui is an instance of a class 
             # that controlls pygame display 

我知道這樣做的唯一方法是使用無限while循環。但是,這幾乎佔用了所有的CPU功率。有沒有另外一種有效的方法去解決這個問題而不使用循環?

回答

2

您可以使用event = pygame.event.wait()等待事件。

+0

工作得很好。謝謝。 – Jonathan 2013-03-10 20:28:18

+1

如果有效,請不要忘記接受答案。 – octopusgrabbus 2013-03-10 20:38:18

+0

對不起,我是新手。謝謝你告訴我。 – Jonathan 2013-03-10 21:24:23