Pygame draws with plain RGB tuples and a handful of pygame.draw functions — lines, circles, rectangles, ellipses, polygons and arcs — each following the same width=0-means-filled convention, and nothing is visible until display.flip() runs.
1-B 2-B 3-B 4-B | 5 three 6 points (x,y) 7 = pygame.draw.circle(screen,(220,20,60),(400,300),40) 8 = width=0 fills the rect solid; width=3 draws only a 3-pixel outline 9 = pygame.display.flip() (or pygame.display.update()) | 10 = old frames "smear" across the screen because nothing erases the previous drawing before the new one is drawn on top of it