以下代码正在循环 - 处于循环中 - 但是当'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
答案 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)
遇到类似问题后,我可以提出以下建议。
尝试通过在代码后添加以下行来用文本更新屏幕: pygame.display.update()
在我的情况下,出现文本无法在屏幕上更新的问题,因为我试图从终端获取输入,然后在pygame屏幕上进行更新。