Python Pygame文本未更新

Python Pygame文本未更新,python,pygame,Python,Pygame,以下代码正在循环-处于循环中-但当“inputStr”更改时,显示不会更改。不过,打印inputStr会产生预期的结果 defFnt = pygame.font.Font("CP437.ttf", 72) txtToRndr = defFnt.render(inputStr,False, (0,0,0)) disp.blit(txtToRndr, (100,300)) 下载链接 如果在渲染前打印inputStr,它会打印一段时间然后停止,这意味着在某个点之后它不会被渲染,我认为这是因为以下情况

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

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

下载链接

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

if (16-len(Gnots))>0:
该值必须为false,因此未执行呈现新文本的代码:

如果在条件之后打印
Gnots
,它将打印它,直到其长度为16个项目,而不是停止
将条件中的数字16改为1000作为一个测试,然后尝试键入,文本会发生变化

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

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


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

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

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

  • 当我试图从终端获取输入,然后在pygame屏幕上更新时,屏幕上出现了文本不更新的问题


  • 这看起来是正确的…到目前为止。需要更多的代码才能确定。添加了更多的代码。Ack;我的意思是关于渲染(你已经说过你已经检查了字符串正在更改)。哦,对不起。渲染还有什么?(除了.flip和disp作为我的曲面的声明)如果你愿意的话,我可以给你整个目录。(这是一个小项目,只需要几个小时)我想看看程序的拓扑结构:主循环和渲染函数。作为备份,也许只需FTP该目录。我来看看。