Reputation: 51
I'm very new to pygame, and I'm trying to make something very basic. The code is supposed to change the color of a rectangle based on the mouse's X position.
The problem is that the rectangle either doesn't show up or the console gives me an error:
AttributeError: 'pygame.Rect' object has no attribute 'color'
The code in question is here:
mouseButtons = pygame.mouse.get_pos()
test = pygame.draw.rect(screen, (255,0,0), rect1)
if (mouseButtons[0] <= 100):
color = (0, 255, 0)
else:
color = (255, 0, 0)
test = pygame.draw.rect(screen, color, rect1)
And here's the full code:
import pygame
from pygame.locals import *
SIZE = 400, 400
pygame.init()
screen = pygame.display.set_mode(SIZE)
rect1 = Rect(100, 100, 200, 200)
def loop():
mouseButtons = pygame.mouse.get_pos()
test = pygame.draw.rect(screen, (255,0,0), rect1)
if (mouseButtons[0] <= 100):
color = (0, 255, 0)
else:
color = (255, 0, 0)
test = pygame.draw.rect(screen, color, rect1)
running = True
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
loop()
screen.fill((255, 255, 255))
pygame.display.flip()
pygame.quit()
Upvotes: 4
Views: 2304
Reputation: 91
I copied your code, and I am not sure how you got the error (I couldn't reproduce it). If you are seeing a white screen, it is because you have this line: screen.fill((255, 255, 255))
, which fills the entire screen white, clearing the rectangles that you've already drawn.
To fix this, you should draw the rectangle after you fill the screen white. You can do that by writing
screen.fill((255, 255, 255))
loop()
instead of
loop()
screen.fill((255,255,255))
Upvotes: 2