为什么我的pygame项目中的文本无法正确显示在屏幕上?我的代码有问题吗?

时间:2019-07-06 15:16:17

标签: python-3.x pygame

我写了一个代码,只是为了简单地接收用户的按键输入,然后将其涂抹到pygame屏幕的特定部分。我的输出看起来像这样:

My output

我的问题是,当我不按空格键而只是输入随机单词时,文本有时会在中间添加空格或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

我的代码的其他部分未显示,因为它们大部分只是初始化。

1 个答案:

答案 0 :(得分:2)

您遇到的行为取决于您使用的字体类型。在普通/比例字体中,就像您使用的Arial一样,渲染时的字符使用的宽度也不相同。相反,在等宽字体中,保证每个字符都具有相同的宽度。

使用一种这样的等宽字体可以解决您遇到的问题。其中一些是:ConsolasCurrierCurrier NewLucida Console。为此,只需像这样编辑代码:

myfont = pygame.font.SysFont('Currier', 30)