在pygame中编写文本

时间:2014-04-30 16:36:07

标签: python python-2.7 pygame

我知道如何在pygame中显示文本,但我真正需要的是能够在pygame窗口运行时编写文本。

这是我的pygame窗口代码:     导入pygame

def highscore():
    pygame.font.init()
    background_colour = (255,255,255)
    (width, height) = (600, 600)

    screen = pygame.display.set_mode((width, height))
    pygame.display.set_caption('Tutorial 1')
    screen.fill(background_colour)

    pygame.display.flip()

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False



highscore()

4 个答案:

答案 0 :(得分:2)

http://www.daniweb.com/software-development/python/code/244474/pygame-text-python

这是一个示例的链接......我认为你正在寻找的代码就是这个......

# pick a font you have and set its size
myfont = pg.font.SysFont("Comic Sans MS", 30)
# apply it to text on a label
label = myfont.render("Python and Pygame are Fun!", 1, yellow)
# put the label object on the screen at point x=100, y=100
screen.blit(label, (100, 100))

答案 1 :(得分:1)

缓慢而简单的方法是:

import pygame

def text(surface, fontFace, size, x, y, text, colour):
    font = pygame.font.Font(fontFace, size)
    text = font.render(text, 1, colour)
    surface.blit(text, (x, y)0

screen = pygame.display.set_mode(500, 100)
screen.fill((255, 255, 255))
text(screen, 'font.ttf', 32, 5, 5, 'This is text', (0, 0, 0)

但是这很慢,因为你每次都要加载字体所以我使用它:

import pygame

fonts = {}

def text(surface, fontFace, size, x, y, text, colour):
    if size in fonts:
        font = fonts[size]
    else:
        font = pygame.font.Font(fontFace, size)
        fonts[size] = font
    text = font.render(text, 1, colour)
    surface.blit(text, (x, y)0

screen = pygame.display.set_mode(500, 100)
screen.fill((255, 255, 255))
text(screen, 'font.ttf', 32, 5, 5, 'This is text', (0, 0, 0)

这样,它会跟踪所使用的每种字体大小,如果它已经使用过它,我会从字典中加载它,否则它会加载字体并将其保存到字典中。唯一的问题是,这只适用于您只使用一个字体,但对于使用的不同字体,您可以只使用不同的字典。

循环只做:

screen = pygame.display.set_mode(500, 100)
running = True
while running:
    screen.fill((255, 255, 255))
    text(screen, 'font.ttf', 32, 5, 5, 'This is text', (0, 0, 0)
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            running = False

另外,只是旁注,CWD中需要一个名为“font.ttf”的文件才能使用此示例。

答案 2 :(得分:1)

在主循环内你需要声明一个字体,然后用

在屏幕上显示它
Environment Variables

那么你只需要更新显示:

screen.blit(renderedfont, (position))

答案 3 :(得分:0)

首先你需要制作一个有两种方式的字体对象

方式1:

fontname = 'freesansbold.ttf'
fontsize = 30
font = pygame.font.Font(fontname, fontsize)

方式2:

fontname = 'comicsansbold'
fontsize = 30
font = pygame.font.SysFont(fontname, fontsize)

然后,您需要从字体对象

渲染文本的表面
text = 'test'
antialias = True
colour = 0,0,0
textSurf = font.render(text, antialias, colour

现在你有了文本表面,你可以将它blit到屏幕和东西。