Pygame:窗口没响应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pygame:窗口没响应相关的知识,希望对你有一定的参考价值。

我是一个ameatur编码器,我最近开始使用pygame,我已经编写了一些示例,我刚刚来到一个在执行时无法正确加载的示例。我很确定我已经正确地写了它,但我无法弄清楚为什么它不会运行。我正在运行python 3.6和Pygame 1.9.3。*

*我知道pygame版本是1.9种,但我不知道最后一位数。

这是代码:

# This just imports all the Pygame modules
import pygame

# This MUST BE the first thing you put into a program!
pygame.init()
# This tells pygame to open a windo 640 pixels by 480
screen = pygame.display.set_mode((640, 480))

# This is called a while loop
# This is the simplest form of an event loop
# This line procceses the window: Such as telling it to close when the user     hits the Escape Key
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            running = False
# Y = DOWN
class Game(object):
    def main(self, screen):
        image = pygame.image.load('player.png')

        while 1:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key ==     pygame.K_ESCAPE:
                    return

            screen.fill((200, 200, 200))
            screen.blit(image, (320, 240))
            pygame.display.flip()

    if __name__ == '__main__':
        pygame.init()
        screen = pygame.display.set_mode((640, 480))
        Game().main(screen)
答案

我修改了你的代码,现在它将运行。我发现的主要问题是,您无法准确理解代码在运行时所执行的操作。

问题已解决:

  • 删除了一个毫无意义的while循环和pygame初始化,无论如何都是在程序执行开始时完成的。
  • 没有缩进if __name__ == "__main__":分支。这个分支永远不属于一个类。在类中,您有方法和变量。这就对了。

除了这些问题之外,代码还没问题,但请确保在继续之前了解它的作用。

我希望这个答案对您有所帮助,如果您有任何其他问题,请随时在下面发表评论!

修改后的代码示例:

# This just imports all the Pygame modules
import pygame

class Game(object):
    def main(self, screen):
        image = pygame.image.load('player.png')

        while 1:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    return
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return

            screen.fill((200, 200, 200))
            screen.blit(image, (320, 240))
            pygame.display.flip()



if __name__ == '__main__':
    pygame.init()
    screen = pygame.display.set_mode((640, 480))
    Game().main(screen)

以上是关于Pygame:窗口没响应的主要内容,如果未能解决你的问题,请参考以下文章

pygame-飞机大战1.0(步骤+窗口无响应问题)

Python pygame窗口不断崩溃

Pygame 窗口在全屏模式下没有响应

python怎么运行pygame

pygame运行未响应问题-外星人成行显示

用python的pygame,但每次程序一运行,pygame window窗口能出现,但是下图这种状态。