尝试使用pygame.display.update在pygame中显示一个png文件,它显示不到一秒然后消失。

时间:2015-07-21 05:14:00

标签: python pygame pycharm

图像是一张扑克牌。我们使用的是pygame 4.5社区版和pycharm 2.6.9,因为2.7不支持pygame(这是一所学校)。这是代码:

import pygame
pygame.init()
picture=pygame.image.load("cards/S01.png")
pygame.display.set_mode(picture.get_size())
main_surface = pygame.display.get_surface()
main_surface.blit(picture, (0,0))
pygame.display.update()

为什么窗口会消失?

2 个答案:

答案 0 :(得分:0)

试试这个:

import pygame
pygame.init()
picture=pygame.image.load("cards/S01.png")
pygame.display.set_mode(picture.get_size())
main_surface = pygame.display.get_surface()
main_surface.blit(picture, (0,0))
while True:
   main_surface.blit(picture, (0,0))
   pygame.display.update()

pygame.display.update()更新一个框架。每秒有多个帧,具体取决于您在表面上绘制的内容。

答案 1 :(得分:0)

问题是,在您使用pygame.display.update()更新屏幕后,您什么也不做,您的程序就会结束。 pygame.display.update()不会阻止。

您需要通常称为主循环的东西。以下是事件处理的简单示例:

import pygame
pygame.init()
picture = pygame.image.load("cards/S01.png")

# display.set_mode already returns the screen surface
screen = pygame.display.set_mode(picture.get_size())

# a simple flag to show if the application is running
# there are other ways to do this, of course
running = True
while running:

    # it's important to get all events from the 
    # event queue; otherwise it may get stuck
    for e in pygame.event.get():
        # if there's a QUIT event (someone wants to close the window)
        # then set the running flag to False so the while loop ends
        if e.type == pygame.QUIT:
            running = False

    # draw stuff
    screen.blit(picture, (0,0))
    pygame.display.update()

这样,只有当某人关闭窗口时,您的应用程序才会这样做。