我知道如何在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()
答案 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到屏幕和东西。