当前位置: 首页 > 知识库问答 >
问题:

PyGames窗口几秒钟后没有响应

堵琨
2023-03-14

这段简单的代码在几秒钟(大约 5 秒)后崩溃(窗口没有响应)。

import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((640, 480), 0, 24)
#clock = pygame.time.Clock()

#font = pygame.font.Font(None, 32)

cycles = 0
while True:
    screen.fill(0)
#    text = font.render('Cycles : %d' % cycles, True, (255, 255, 255))
#    screen.blit(text, (100, 100))

    cycles += 1

    pygame.display.update()

如果我取消注释注释的行,我可以清楚地看到程序在显示 47 到 50 之间的值时失控。

我使用 python 2.7 和 pygame 1.9.2、Windows 8(64 位)和 Eclipse PyDev。

共有3个答案

高祺
2023-03-14

窗口没有响应(冻结),因为您没有处理这些事件。您必须通过< code>pygame.event.pump()或< code>pygame.event.get()来处理事件,以保持窗口响应。

查看pygame.event.pump()的留档:

对于游戏的每一帧,您需要对事件队列进行某种调用。这确保您的程序可以在内部与操作系统的其余部分交互。

添加一个事件循环,例如:

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    # [...]

或者,只泵送事件:

while True:
    pygame.event.pump()

    # [...]
朱令
2023-03-14

您需要定期调用pygame.event模块中的四个函数之一,以便py游戏在内部与您的操作系统交互。否则操作系统会认为您的游戏已经崩溃。所以确保您调用其中之一:

  • pygame.event.get() 返回事件队列中当前所有事件的列表。
  • pygame.event.poll() 从事件队列或 pygame() 返回单个事件。如果队列为空,则为 NOEVENT。
  • pygame.event.wait() 从事件队列中返回单个事件,或者等到可以返回事件。
  • pygame.event.pump() 允许 pygame 处理内部操作。当您不想处理事件队列中的事件时很有用。
姚骁
2023-03-14

while循环开始时调用< code>pygame.event.get()。

 类似资料:
  • 问题内容: 我想知道,几秒钟后如何在jquery中隐藏div?例如Gmail的邮件。 我已经尽力了,但是无法正常工作。 问题答案: 这将在1秒(1000毫秒)后隐藏div。 如果您只想隐藏而不褪色,请使用。

  • 我是一个ameatur编码器,我最近开始使用pyplay,我一直在编码一些例子,我刚刚找到一个执行时无法正常加载的例子。我很确定我写对了,但我不知道为什么它不会运行。我运行Python 3.6和Pygame1.9.3。** *我知道pygame的版本是1.9,但我不知道最后一个数字。 这是代码:

  • 我已经在上安装了Sonar,所有先决条件都是Mysql和Java。在控制台模式下启动服务时,将出现以下错误消息: 甚至,wrapper.properties文件中也配置了Java环境变量,但问题仍然存在。 来人,帮我解决这个问题。 在下面的wrapper.java.command(wrapper.properties)中设置Java路径后,将出现错误。 正在运行索纳库贝...包装器-->包装器作为

  • 我读过很多关于如何在几秒钟后以多种方式隐藏对话框的答案。然而,我不能得到这个工作与我的例子。 我正在使用一个opencart插件,当你在购物车中添加一个产品后会显示一个DIV,但它会一直保持在那里,只有当用户点击“继续购物”时才会关闭。我希望这个DIV在5秒后自动关闭。 我已经尝试setTimeout,延迟等,没有工作......所以我不确定我做错了什么: 代码是这样的: 有人能帮我吗? 编辑:

  • 问题内容: 所以,我有两个日期和 我如何找出它们之间有多少秒? 问题答案: 我用YYYY和ZZZZ表示整数,表示年份,MM&NN表示整数,表示年份的月份,而DD&EE表示整数,表示月份的月份。 或者,如果您的日期采用javascript可以解析的格式 然后您可以使用该值作为毫秒之间的差异(在我的两个示例中,dif的含义相同)

  • 这是完整的代码,这是一个滚动程序的原型,它被打破了(尽管如此),但是每当我试图点击它时,我都会看到没有响应的窗口