gpt4 book ai didi

python - Pygame 文本换行符

转载 作者:行者123 更新时间:2023-12-01 09:04:16 26 4
gpt4 key购买 nike

我正在编写使用 pygame、维基百科搜索程序的代码

这是我的代码的一部分

display = pygame.display.set_mode((420, 990))

sem = pygame.font.Font("fonts.ttf", 30)

def write(msg, color, x, y):
surface = sem.render(msg, True, color)
display.blit(surface, (x,y))

然后,我可以渲染文本。接下来,输入我想在维基百科中获取信息的单词(跳过代码):并在维基百科中获取信息(下一行)结果 = wikipedia.summary(搜索, 句子=2)

但是如果我写长句子,结果是这样的: enter image description here

这句话被删掉了。所以,我想要这样的结果:

上一页

Stack Overflow 是一个私有(private)持有的网站,fl

期望的结果

Stack Overflow 是一个私有(private)持有的网站,流程(句子继续)

如何在 pygame 中换行?(但我不知道句子长度

最佳答案

这是一个运行示例(使用 word_wrap 函数 from the documentation ):

import pygame
import pygame.freetype
pygame.init()

screen = pygame.display.set_mode((100, 200))
running = True

def word_wrap(surf, text, font, color=(0, 0, 0)):
font.origin = True
words = text.split(' ')
width, height = surf.get_size()
line_spacing = font.get_sized_height() + 2
x, y = 0, line_spacing
space = font.get_rect(' ')
for word in words:
bounds = font.get_rect(word)
if x + bounds.width + bounds.x >= width:
x, y = 0, y + line_spacing
if x + bounds.width + bounds.x >= width:
raise ValueError("word too wide for the surface")
if y + bounds.height - bounds.y >= height:
raise ValueError("text to long for the surface")
font.render_to(surf, (x, y), None, color)
x += bounds.width + space.width
return x, y

font = pygame.freetype.SysFont('Arial', 20)

while running:
for e in pygame.event.get():
if e.type == pygame.QUIT:
running = False
screen.fill((255, 255, 255))
word_wrap(screen, 'Hey, this is a very long text! Maybe it is too long... We need more than one line!', font)
pygame.display.update()

结果:

result

请注意此代码如何使用 pygame.freetype 模块而不是 pygame.font,因为它提供了诸如 Font.render_to 这样的好函数。和 Font.get_rect .

关于python - Pygame 文本换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52197785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com