Python 为什么pygame.display.update在被调用一定次数后停止工作?

Python 为什么pygame.display.update在被调用一定次数后停止工作?,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,当运行时,我会在我的界面(WIN)上显示一些文本,我想在游戏中显示这些文本,所以我调用pygame.display.update来更新显示,这会非常好地工作,直到循环重复大约75次,然后显示停止更新。代码如下 def dialogue(x,y,text): global clock global run typing=True tempstring="" counter=0 switcher=0 for z in ran

当运行时,我会在我的界面(WIN)上显示一些文本,我想在游戏中显示这些文本,所以我调用pygame.display.update来更新显示,这会非常好地工作,直到循环重复大约75次,然后显示停止更新。代码如下

def dialogue(x,y,text):
    global clock
    global run
    typing=True
    tempstring=""
    counter=0
    switcher=0
    for z in range(0,(len(text))):
        clock.tick(15)
        tempstring=text[0:z+1]
        counter+=1
        print(counter)
        print("temp is "+tempstring)
        writing=TITLE_FONT.render(tempstring, 1, (255,255,255),(0,0,0))
        if x==-1 and y>-1:
            pygame.display.update(WIN.blit(writing, (640-(writing.get_width()//2),y-(writing.get_height()//2))))
        elif x>-1 and y==-1:
            pygame.display.update(WIN.blit(writing, (x-(writing.get_width()//2),360-(writing.get_height()//2))))
        elif x==-1 and y==-1:
            pygame.display.update(WIN.blit(writing, (640-(writing.get_width()//2),360-(writing.get_height()//2))))
        else:
            pygame.display.update(WIN.blit(writing, (x-(writing.get_width()//2),y-(writing.get_height()//2))))
    
    print(typing)
    while True:
        event = pygame.event.wait()
        if event.type == pygame.QUIT:
            run=False
            pygame.quit()
            break
        if event.type == pygame.KEYDOWN:
            break

我也尝试过在if语句行的末尾使用pygame.display.update(),但这也失败了。

在某些系统上,如果您没有获得
pygame,pygame
将无法正常工作。来自系统的event可能会认为程序挂起,甚至可能会关闭它

您可能需要在循环中使用
pygame.even.get()
(或类似函数)


在文档中可以找到(但隐藏在长描述中)

为了防止丢失事件,特别是发出退出命令的输入事件,您的程序必须在每一帧处理事件(使用pygame.event.get()、pygame.event.pump()、pygame.event.wait()、pygame.event.peek()或pygame.event.clear())并对其进行处理

不处理事件可能会导致系统确定程序已锁定

要使pygame与系统保持同步,您需要在内部调用pygame.event.pump()处理pygame事件处理程序,以使所有内容保持最新


请提供预期的(MRE)。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。您发布的代码只定义了一个函数,并在不调用它的情况下停止。我们希望您在发布时执行基本诊断。至少,在错误点打印可疑值,并将其追溯到其来源。在许多情况下,执行此基本诊断将向您显示问题所在,而您根本不需要堆栈溢出。我已经执行了基本诊断,以查看实际错误所在以及函数中的错误,因此我在这里问,如果有人以前遇到过与我相同的问题,哪里有丰富的经验。如果我没有尝试并涵盖了基础知识,我就不需要要求更复杂的解决方案,所以我也不需要问。在某些系统上,如果您没有从系统中获取
pygame.event
,它将无法正常工作-系统可能会认为程序挂起,甚至可能会关闭它。您可能需要在循环中使用
pygame.event.get()