2010-04-27 11 views
7

Ho problemi a eseguire un'applicazione basata su Pygame su Mac OS X tramite Terminale. Gli eventi di input come le sequenze di tasti vanno al Terminale invece della mia app Python e vengono rilevati da pygame.L'ingresso Pygame per Mac OS X va a Terminale invece che a Python

Per esempio, ho il seguente script di test:

import pygame 

pygame.init() 
screen = pygame.display.set_mode((640, 480)) 

done = False 
while not done: 
    pygame.event.pump() 
    keys = pygame.key.get_pressed() 
    if keys[pygame.K_ESCAPE]: 
     done = True 
    if keys[pygame.K_SPACE]: 
     print "got here" 

Né K_ESCAPE né K_SPACE saranno trattati da questo script quando l'eseguo da una X Terminale di Mac OS, ma Terminal saranno eco indietro gli spazi.

Sto eseguendo la porta MacPorts di pygame (py-game), che dipende da Python 2.4, e ho anche usato python_select per rendere python24 la versione attiva.

+0

Questo apre una finestra Pygame? Hai provato a mettere a fuoco quella finestra? – nosklo

+0

Sì, si apre una finestra, e sì ho provato a dare a quella finestra il focus. Sembra accettare la messa a fuoco, ma l'input appare ancora nel terminale. – Parappa

risposta

2

Il gioco Py predefinito su porte Mac ha il problema che descrivi. Una soluzione è installare invece l'obiettivo py-game2.6. Questo funziona per me con OS X 10.6.7.

1

È possibile verificare se le costanti pygame.K_ * corrispondono effettivamente ai valori corretti per la tastiera? Per la cronaca ho provato il tuo codice in Linux su un MacBook Pro e sembra funzionare bene.

+0

Ho provato questo codice anche in Linux e funziona perfettamente. Sono abbastanza sicuro che il problema sia con il mio ambiente Terminale e/o con la configurazione di Pygame, ma non so cosa sia. – Parappa

+1

Un altro suggerimento (se non lo hai risolto), sei sicuro che 'python_select' sta funzionando come vuoi? http://stackoverflow.com/questions/1768881/how-to-make-python-select-work-for-python-command – aganders3