Pygame中屏幕绘制的文本后方为何出现矩形?
解决Pygame文本后方出现小矩形的问题
你遇到的文本后方小矩形,是因为用readlines()读取文件时,每行内容末尾会保留换行符\n。当Pygame渲染包含这个换行符的文本时,由于字体无法显示该字符,就会用一个占位小矩形替代。
方案1:不修改读取逻辑,处理换行符
在赋值给变量时,用strip()方法去掉每行末尾的换行符(同时也会去掉前后多余空白):
with open('stats.txt', 'r') as f: a = f.readlines() coins = a[0].strip() # 去掉换行符 eggs = a[1].strip() time_left = a[2].strip() chickens = a[3].strip() grain = a[4].strip()
这样渲染文本时,内容里就没有多余的换行符,小矩形会消失。
方案2:优化文件读取方式(可选)
如果想简化读取逻辑,可以一次性读取全部内容并按行分割,同时自动处理换行:
with open('stats.txt', 'r') as f: lines = [line.strip() for line in f] coins, eggs, time_left, chickens, grain = lines[:5]
这种写法更简洁,也能避免换行符问题。另外注意,如果你需要将这些值转为数值类型(比如coins是整数,time_left是浮点数),可以在赋值时直接转换:
coins = int(lines[0]) eggs = int(lines[1]) time_left = float(lines[2]) chickens = int(lines[3]) grain = int(lines[4])
这样后续使用变量时也更方便,不需要再做类型转换。
内容的提问来源于stack exchange,提问作者ACarrot
相关产品推荐
相关产品推荐

