Pygame ValueError: проблема с неверным аргументом цвета - PullRequest
1 голос
/ 12 мая 2019

Я пытаюсь создать радугу из прямоугольников с помощью pygame, но у меня возникает проблема с сообщением «ValueError: неверный аргумент цвета»

import pygame
pygame.init()

width = 400
height = 400
window_size = (width , height)
screen = pygame.display.set_mode(window_size)

colour = pygame.color.Color('#646400')

row = 0
done = False
while not done:
    increment = 255 / 100
    while row <= height:
        pygame.draw.rect(screen, colour, (0, row, width, row + increment))
        pygame.display.flip()
        if colour[2] + increment < 255:
            colour[2] += increment
        row += increment

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
pygame.quit()

Ответы [ 3 ]

1 голос
/ 12 мая 2019

Самый простой способ - просто использовать tuple значений rgb для цвета:

color = (100, 100, 0)  # equal to #646400

И затем просто передать его в качестве второго аргумента draw.rect(), как вы уже сделали:

pygame.draw.rect(screen, colour, (0, row, width, row + increment))
0 голосов
/ 13 мая 2019

Как и многие другие, PyGame не поддерживает цветовые строки в HTML-нотации.

Но преобразовать их довольно просто:

# Convert HTML-like colour hex-code to integer triple tuple
# E.g.: "#892da0" -> ( 137, 45, 160 )
def hexToColour( hash_colour ):
    """Convert a HTML-hexadecimal colour string to an RGB triple-tuple"""
    red   = int( hash_colour[1:3], 16 )
    green = int( hash_colour[3:5], 16 )
    blue  = int( hash_colour[5:7], 16 )
    return ( red, green, blue )

...

colour = hexToColour( '#646400' )

Обычно преобразовывать их вColor объект для их использования.

0 голосов
/ 12 мая 2019

вам нужно это изменить, colour = pygame.color.Color('#646400') потому что будет проще перейти с цветами RGB в list. измените это на это:

colour = [0,0,100] 

или любой другой цвет, который вы хотите, возможно, смешайте их, чтобы получить радугу в результате. Это то, что я бы сделал. Результатом кода является градиент синего цвета. Но, как я уже говорил, вы можете изменить это. Но помните, что вы не можете использовать tuple! Потому что они не изменчивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...