Python 如何在pygame中基于mousemotion绘制矩形

Python 如何在pygame中基于mousemotion绘制矩形,python,events,graphics,pygame,Python,Events,Graphics,Pygame,我正在尝试在pygame中创建一个绘画程序。它要求用户能够通过单击和拖动在屏幕上绘制矩形 pygame.draw.rect(screeny, (255,255,255), [posi[0], posi[1], e.pos[0]-posi[0], e.pos[1]-posi[1]], 1) square = pygame.draw.rect(screeny, color, [posi[0], posi[1], e.pos[0]-posi[0], e.pos[1]-posi[1]], 1) pyg

我正在尝试在pygame中创建一个绘画程序。它要求用户能够通过单击和拖动在屏幕上绘制矩形

pygame.draw.rect(screeny, (255,255,255), [posi[0], posi[1], e.pos[0]-posi[0], e.pos[1]-posi[1]], 1)
square = pygame.draw.rect(screeny, color, [posi[0], posi[1], e.pos[0]-posi[0], e.pos[1]-posi[1]], 1)

pygame.display.flip()

但是,矩形显示不正确。如何仅从鼠标按钮的下点到鼠标按钮的上点绘制一个矩形?

我没有足够的代码来处理您的示例。但是我能够制作一些代码来创建框并将其留在屏幕上

import pygame, sys
from pygame.locals import * //Allows MOUSEMOTION in stead of pygame.MOUSEMOTION

window_size = (800, 600)
clock = pygame.time.Clock()
FPS = 60
mousepos = None
boxes = []

screen = pygame.display.set_mode(window_size)

BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

while 1:

    screen.fill(WHITE)

    events = pygame.event.get()

    for event in events:
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

        if event.type == MOUSEBUTTONDOWN:
            mousepos = [event.pos[0], event.pos[1], 0, 0]

        if event.type == MOUSEBUTTONUP:
            boxes.append(mousepos)
            mousepos = None

        if event.type == MOUSEMOTION and mousepos != None:
            mousepos = [mousepos[0], mousepos[1], event.pos[0] - mousepos[0], event.pos[1] - mousepos[1]]

    for box in boxes:
        pygame.draw.rect(screen, BLACK, box, 1)

    if mousepos != None:
        pygame.draw.rect(screen, BLACK, mousepos, 1)

    pygame.display.update()
    clock.tick(FPS)
我希望这有帮助

注意:小心事件队列,这很危险。不要用它来检查按键。使用“pygame.key.get_pressed()[K_(这里的键)]”。如果需要防止触发两次,请创建一个包含以前值的列表,如下所示:

prev = pygame.key.get_pressed()

if prev[K_(key here)] != pygame.key.get_pressed()[K_(Key here)]
    do your stuff...

多边形。看多边形部分。但是我不想要一个反大小的形状。我想要一个形状(rect),可以根据事件重新调整大小。我知道怎么画东西。