Pygame Surface.fill()不起作用

时间:2017-01-26 12:34:40

标签: python pygame

我最近开始学习pygame。我做了一个非常基本的程序(它只是改变它自己的背景颜色):

import pygame
from pygame.locals import *

pygame.init()
DISPLAY = pygame.display.set_mode((800,600))


while True:
    for event in pygame.event.get():
        if event == QUIT:
            pygame.quit()
            sys.exit()
    DISPLAY.fill((3,4,5))
    pygame.display.update()

然而当程序运行时,它所做的就是生成一个空白的黑色pygame窗口。我使用的是带有python 3.5.2和pygame 1.9.1的Windows 10 64位主页。请帮我弄清楚程序不起作用的原因?

1 个答案:

答案 0 :(得分:2)

它工作正常,你只是使用非常深的颜色(R = 3/255,G = 4/255,B = 5/255)。试试这个以获得蓝屏:

DISPLAY.fill((0,0,255))

来自Surface.fill上的documentation

fill(color, rect=None, special_flags=0) -> Rect
     

...

     

颜色参数可以是RGB序列,RGBA序列或映射颜色索引。

RGB值的每个分量范围为0到255,其中255表示该组件的最大强度。纯黑色表示为(0, 0, 0),白色表示为(255, 255, 255)

为了更好地演示(或有趣),您可以使用此程序了解可以从不同RGB值获得的背景颜色:

from itertools import product

import pygame
import sys

pygame.init()
DISPLAY = pygame.display.set_mode((200, 200))

for r, g, b in product(range(0, 255, 16), repeat=3):
    print('r={}, g={}, b={}'.format(r, g, b))
    DISPLAY.fill((r, g, b))
    pygame.display.update()
    pygame.time.delay(10)

pygame.quit()
sys.exit()