Pygame教程:font.render文本内容,如何自动换行显示

------------★Pygame系列教程★------------

Pygame教程01:初识pygame游戏模块
Pygame教程02:图片的加载+缩放+旋转+显示操作

Pygame教程03:文本显示+字体加载+transform方法

Pygame教程04:draw方法绘制矩形、多边形、圆、椭圆、弧线、直线和线条等

在Pygame中,font.render() 函数不支持直接在文本内容中插入换行符来创建多行文本。这是因为font.render() 函数仅支持渲染一行文本,并且“换行”字符不会被渲染。如果你需要在一个Surface对象上渲染多行文本,你需要分别渲染每一行,并调整每行文本的位置。

我们首先定义了多行文本内容text_lines,然后创建了一个字体对象font。接着,我们使用列表推导式来分别渲染每一行文本,并将结果存储在text_surfaces列表中。我们还计算了每行文本在屏幕上的位置,存储在text_positions列表中。

在游戏主循环中,我们遍历text_surfaces和text_positions,将每一行文本渲染到屏幕上。注意,我们在这里简单地将每行文本向下移动了字体高度加上一些额外的间距(10像素)。
在这里插入图片描述

# @Author : 小红牛
# 微信公众号:WdPython
import sys
import pygame

# 初始化 Pygame
pygame.init()

# 设置窗口大小
screen = pygame.display.set_mode((700, 500))

# 设置楷体字体
font = pygame.font.SysFont('kaiti', 50, bold=False, italic=False)

# 1.定义多行文本内容
text_lines = ["这是第一行文本", "这是第二行文本", "这是第三行文本"]

# 2.分别渲染每一行文本
text_surfaces = [font.render(line, True, (255, 255, 255)) for line in text_lines]

# 3.计算文本的位置(这里简单地将每行文本向下移动)
text_positions = [(180, 50 + i * (text_surfaces[0].get_height() + 10)) for i, _ in enumerate(text_lines)]

# 游戏主循环
while True:
    # 处理事件队列
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            # 关闭游戏
            pygame.quit()
            sys.exit()

    # 填充背景颜色
    screen.fill((0, 0, 0))

    # 4.将每行文本渲染到屏幕上
    for surface, pos in zip(text_surfaces, text_positions):
        screen.blit(surface, pos)

    # 5.更新屏幕显示
    pygame.display.flip()

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值