在pygame中创建一个窗口而不显示它

时间:2015-03-17 16:45:51

标签: python-2.7 pygame

我使用:

在pygame中创建一个屏幕
screen = pygame.display.set_mode((width,height))

然后我在其上绘制200个随机灰度圆并将屏幕保存为图像。 (我需要将此屏幕保存为图像,以便稍后将其与目标图像进行比较):

pygame.image.save(screen, "Circles.png")

现在,我需要随机更改不同圆圈的不同参数,方法是将包含圆圈参数的numpy数组放在循环中,并将一个大数字作为迭代值。

我需要在屏幕上重绘突变的圆圈(在每次迭代结束时)并再次将该屏幕保存为png图像。

现在的问题是,每次我使用pygame.display.set_mode((width,height))时,它都会打开显示窗口,这会大大减慢我的程序。

我想创建一个屏幕并将其保存在变量中,但不需要在每次迭代时显示该屏幕。我无法弄清楚用什么命令来避免显示屏幕。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

如果您不想显示窗口,请尝试创建如下表面:

screen = pygame.Surface((width,height))

然后,您可以在此表面上绘制圆圈,并以与之前相同的方式保存。正如其他人所说,用fill()方法清除表面。

答案 1 :(得分:1)

我可能最终会使用这样的东西。这仍将弹出一个屏幕,但它会很小,永远不会更新。

import pygame
from pygame.locals import *

pygame.init()

def circle_drawing(surf):
    pass
    #your circle drawing function using passed in surface

DISPLAY = (1, 1)
DEPTH = 32
FLAGS = 0
screen = pygame.display.set_mode(DISPLAY, FLAGS, DEPTH)
work_surface  = pygame.Surface((500,500))
count = 0
while True:
    ws = circle_drawing(work_surface.copy())
    pygame.image.save(ws, "circles_" + str(count)+".png")
    count +=1