Pygame文本未更新

2024-09-28 20:41:56 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码正在循环中-处于循环中-但当“inputStr”更改时,显示不会。不过,打印inputStr会产生预期的结果。在

defFnt = pygame.font.Font("CP437.ttf", 72)
txtToRndr = defFnt.render(inputStr,False, (0,0,0))
disp.blit(txtToRndr, (100,300))

下载链接;http://www.mediafire.com/download/a4hp9wgojxgiao9/functGroup.rar


Tags: 代码falsehttp链接ttfrenderpygamefont
2条回答

你的代码需要重构。正如另一个答案所说,主要问题是if块(尝试将其更改为if True:)。在

我建议设置帧速率上限,但无条件地绘制每一帧,因为这样更简单、更健壮。你也不会在每一帧都清除屏幕,而且PyGame有很好的密钥标记(例如PyGame.K_ESCAPE),你应该用它来代替数字。每次绘图时也要加载字体;只需在程序顶部加载一次。在

这是我的PyGame basecode,它展示了一些最佳实践。在draw()函数中,添加fill调用以清除屏幕,然后添加所有渲染代码的所有。在

如果在渲染之前打印inputStr,它会打印一段时间然后停止,这意味着它在某个点之后不会被渲染,我想这是因为以下情况:

if (16-len(Gnots))>0:

结果一定是false,因此呈现新文本的代码不会执行:

如果在条件之后打印Gnots,它将打印它,直到它的长度比停止的长度多16个项目为止 将条件中的数字16更改为1000作为测试,而不是尝试键入,文本将更改

相关问题 更多 >