我需要将kb输入到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 :(得分:0)
首先你画两次得分,我认为效果很好。
问题在于你启动功能。
您没有在while循环中调用任何绘制或更新功能。
在foreach事件中,您向name
添加一个数字,并在按下enter时退出while循环。然后用Pchange绘制两次,但是你的功能是不使用正确的参数。你有:
def Pchange(c,y):
block = font.render(N, True, (0,0,0))
你正在使用全球N''。因此,要解决此问题,您需要将N
更改为c
。
接下来的问题是游戏在按下Enter后立即退出。由于您只粘贴了程序的一部分,因此情况可能并非如此。如果是,请进行另一个while循环,然后等待ESC键调用pygame.quit()
和sys.exit()