Pygame文本没有更新

时间:2014-03-10 04:15:06

标签: python pygame

以下代码正在循环 - 处于循环中 - 但是当'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

3 个答案:

答案 0 :(得分:1)

如果你在渲染之前打印inputStr它会打印一段然后停止,这意味着它不会在某个点之后被渲染,我认为这是因为这个条件:

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

它必须是false,因此呈现新文本的代码不会被执行:

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

答案 1 :(得分:0)

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

我建议限制帧速率,但无条件地绘制每一帧,因为这更简单,更健壮。你也没有清除每一帧的屏幕,PyGame有很好的密钥令牌(例如pygame.K_ESCAPE)你应该使用而不是数字。你每次画画时都要加载字体;您只需要在程序的顶部执行一次。

这是我的PyGame basecode,其中显示了一些最佳做法。在draw()函数中,您需要添加fill调用以清除屏幕,然后所有渲染代码。

答案 2 :(得分:0)

遇到类似问题后,我可以提出以下建议。

  1. 尝试通过在代码后添加以下行来用文本更新屏幕: pygame.display.update()

  2. 在我的情况下,出现文本无法在屏幕上更新的问题,因为我试图从终端获取输入,然后在pygame屏幕上进行更新。