Python 为什么pygame.display.update在被调用一定次数后停止工作?
当运行时,我会在我的界面(WIN)上显示一些文本,我想在游戏中显示这些文本,所以我调用pygame.display.update来更新显示,这会非常好地工作,直到循环重复大约75次,然后显示停止更新。代码如下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
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()
。