欢迎光临散文网 会员登陆 & 注册

中文编程pygame游戏教程7_显示文字

2023-08-25 17:07 作者:52中文编程  | 我要投稿

在pygame中,文字不能直接显示到屏幕, 需要先渲染成图像。先创建具有给定字体大小的对象。再将文本转换为具有给定颜色的图像。 最后将图像信息用 贴图()方法 传输到屏幕上。下面是步骤:


创建字体后,无法更改其大小。 对象用于从字符串创建对象。Pygame没有提供将文本写入对象的直接方法。该方法必须是 用于从文本创建 表层(Surface)对象,然后可以将其传送到屏幕上。 该方法只能呈现单行文字。 不能呈现换行符。

初始化字体

上面的代码字体.系统字体(空, 48)中第一个参数是空, 代表使用默认字体, 默认字体不支持中文, 显示中文必须指定字体名称, 比如字体.系统字体('SIMHEI', 48)是黑体, 字体的名称必须是运行代码的电脑所安装的, 可以用字体.获取可用字体()方法获取系统安装的系统名称.对于windows电脑,可以打开C:\Windows\Fonts查看安装字体, 参数使用的字体名称是字体文件的文件名, 不一定是显示的名称, 我们在查看黑体字体的属性可以看到它的字体文件名是simhei, 其他的字体也是如此.但是有些中文字体可能不能正常显示, 建议使用前测试一下.


字体.获取可用字体()返回所有已安装字体的列表。 以下代码检查系统上有哪些字体以及有多少, 并将它们打印到控制台:


呈现文本

字体对象可以将给定的文本呈现为图像。在下面的示例中, 我们在文本图像周围放置一个蓝色边框:


然后,我们再创建两种字体并渲染文本:


最后,文本图像像常规图像一样被传送到屏幕上:


结果如下:




这是完整的代码:


使用键盘编辑文本

键盘事件可用于编辑文本。首先,我们创建一个文本保存在一个字符串变量中,并将其渲染为图像:


然后我们定义边界矩形,进而定义一个很窄的矩形作为光标 并列到文本右侧:


在事件循环中,我们添加 键盘按下事件 。如果按键是 BACKSPACE(退格键) 并且字符串的长度大于 0,然后我们删除最后一个字符, 否则,我们将新字符附加到文本变量:


然后我们渲染修改后的文本,更新边框,并放置光标, 更新的光标位置:


为了使光标更明显,我们让它每 0.5 秒闪烁一次。 我们使用 time.time() 浮点值来执行此操作:





遗憾的是, 这样并不能输入中文. 下面的代码中使用了easygui库的输入框, 当按下键盘的ctrl+v时, 弹出输入框输入后会插入到文本右侧.
完整代码如下:



中文编程pygame游戏教程7_显示文字的评论 (共 条)

分享到微博请遵守国家法律