我写了一个代码,只是为了简单地接收用户的按键输入,然后将其涂抹到pygame屏幕的特定部分。我的输出看起来像这样:
我的问题是,当我不按空格键而只是输入随机单词时,文本有时会在中间添加空格或blit太近。这是我的一些代码:
x=900
while True:
pygame.display.update()
events=pygame.event.get()
for event in events:
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
if event.type==MOUSEBUTTONUP:
(x,y)=event.pos
if x in data_amount_x_list and y in data_amount_y_list:
print("Data amount hit!")
elif x in radius_x_list and y in radius_y_list:
print("Radius hit!")
elif x in execute_x_list and y in execute_y_list:
print("Execute hit!")
else:
print("None")
if event.type==KEYDOWN:
text=event.unicode
myfont = pygame.font.SysFont('Arial', 30)
surface = myfont.render(text, True,(0,0,0))
screen.blit(surface,(x,140))
x+=15
我的代码的其他部分未显示,因为它们大部分只是初始化。
答案 0 :(得分:2)
您遇到的行为取决于您使用的字体类型。在普通/比例字体中,就像您使用的Arial
一样,渲染时的字符使用的宽度也不相同。相反,在等宽字体中,保证每个字符都具有相同的宽度。
使用一种这样的等宽字体可以解决您遇到的问题。其中一些是:Consolas
,Currier
,Currier New
,Lucida Console
。为此,只需像这样编辑代码:
myfont = pygame.font.SysFont('Currier', 30)