2013-01-23 88 views
0

我需要kb輸入到pygame屏幕 目前它出現在空閒shell 任何意見,將不勝感激。Pygame文字輸入不在屏幕上

此代碼是從較大的程序 大多屏幕基於提取的,但我需要輸入從KB有時一些 數據(數字)

import sys 
import pygame 
from pygame.locals import * 
pygame.init() 

N= '' 
screen = pygame.display.set_mode((600,600)) 
font= pygame.font.Font(None,40) 
screen.fill((255,255,255)) 
pygame.display.flip 
pygame.display.update() 


def score(C,y): 
    SetWnd = font.render(C,True,(0,0,255)) 
    screen.blit(SetWnd, (15, 100+y)) 
    pygame.display.update() 


def start(): 
    while True: 
     name='' 

     for evt in pygame.event.get(): 
       if evt.type == KEYDOWN: 
        if evt.unicode.isalnum(): # unicode 
         name+=evt.unicode 
         print name, 

        elif evt.key == K_BACKSPACE: 
          name = name[:-1] 
          print name, 
        elif evt.key == K_RETURN: 
         return N 
       elif evt.type == QUIT: 
        pygame.quit() 
        sys.exit() 
def Pchange(c,y): 
    block = font.render(N, True, (0,0,0)) 
    rect = block.get_rect() 
    rect.move_ip(75,100 + y) 
    screen.blit(block,rect) 
    pygame.display.flip() 



score('wind', 0) 
score('elev',20) 

N = start() 
Pchange(N,0) 
Pchange(N,20) 

回答

0

首先繪製比分兩次,這是我假定作品好。

問題出在你啓動功能。 您不在while循環中調用任何繪圖或更新函數。 在您的事件foreach中,您將一個數字添加到name,並在按Enter鍵時退出while循環。然後你用Pchange繪製兩次,但是你的功能沒有使用正確的參數。你有:

def Pchange(c,y): 
    block = font.render(N, True, (0,0,0)) 

你正在使用全球N是''。所以要解決這個問題,你需要將N更改爲c

接下來的問題是遊戲在按下回車鍵後立即退出。既然你只粘貼了一部分程序,可能並非如此。如果是的話,再做一個while循環,然後等待ESC鍵調用pygame.quit()sys.exit()

+0

非常感謝是的還有更多的正確退出編程N代替C是一個複製錯字---仍然有問題,輸入只在外殼上打印後才能打印 – user2001044

+0

您可以編輯您的問題,這樣我們就能更好地看到問題。 –