Cómo monitorear los movimientos del mouse en Pygame

Método para monitorear las teclas del teclado en Pygame_pygame obtiene la entrada del teclado: el blog CSDN mencionó que las acciones del teclado se monitorean obteniendo eventos en la cola en el bucle while True. Monitorear los movimientos del mouse es lo mismo que monitorear los movimientos del teclado.

Conexión relacionada 1 Para obtener conocimientos relacionados sobre colas y eventos, consulte

Cómo monitorear las teclas del teclado en Pygame_pygame obtiene la entrada del teclado-CSDN Blog

1 Clasificación de eventos del mouse.

Los eventos del mouse en la cola se dividen principalmente en tres categorías: mover, presionar y soltar. Los valores correspondientes a estos tres eventos son MOUSEMOTION, MOUSEBUTTONDOWN y MOUSEBUTTONUP respectivamente.

2. Manejo de eventos de movimiento del mouse.

Al procesar los eventos de movimiento del mouse, se implementa la función de visualización en tiempo real de las coordenadas del mouse, como se muestra en la Figura 1.

Figura 1 Visualización en tiempo real de las coordenadas del mouse

En el bucle while True, el evento se obtiene primero de la cola a través de pygame.event.get (), y luego el tipo de evento se juzga a través de la declaración if. El código es el siguiente.

if event.type == MOUSEMOTION:

En este momento significa que el mouse se está moviendo en la pantalla, en este momento la pantalla primero se llena cubriendo las coordenadas mostradas anteriormente.

screen.fill((0, 0, 255))

Después de eso, construya las coordenadas que se mostrarán.

coordinate = '(%d,%d)'%event.pos

Entre ellos, event.pos es una tupla que contiene la abscisa y la ordenada actual del mouse; finalmente, las coordenadas construidas del mouse se muestran en la pantalla.

imgText = font.render(coordinate, True, (255,255,255))
screen.blit(imgText,event.pos)
pygame.display.update()

Enlaces relacionados 2 Cómo utilizar la fuente, consulte

Cómo monitorear las teclas del teclado en Pygame_pygame obtiene la entrada del teclado-CSDN Blog

3 eventos de presionar y soltar el mouse

Al monitorear los eventos de presionar y soltar el mouse, se puede realizar la función de dibujar líneas en la pantalla. Es decir, dibuje una línea recta con el mouse presionado como punto inicial y soltado como punto final, como se muestra en la Figura 2.

Figura 2 Dibujo de pantalla

Cuando se presiona el mouse, el evento correspondiente es MOUSEBUTTONDOWN y las coordenadas del mouse se guardan como el punto inicial de la línea recta.

line_start = event.pos

Cuando se suelta el mouse, el evento correspondiente es MOUSEBUTTONUP, en este momento las coordenadas del mouse se guardan como el punto final de la línea recta, según el punto inicial y el punto final, la línea se dibuja en la pantalla a través de pygame. método draw.line().

line_end = event.pos
pygame.draw.line(screen, (255, 0, 0), line_start, line_end)
pygame.display.update()

Entre ellos, el primer parámetro del método pygame.draw.line() representa la pantalla especificada, el segundo parámetro representa el color de la línea; el tercer y cuarto parámetro representan el punto inicial y final de la línea respectivamente.

4 código completo

El código completo mencionado anteriormente se muestra a continuación.

import sys
import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((500, 200))
screen.fill((0, 0, 255))
pygame.display.update()
font = pygame.font.Font(None, 20)
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        if event.type == MOUSEMOTION:
            screen.fill((0, 0, 255))
            coordinate = '(%d,%d)'%event.pos
            imgText = font.render(coordinate, True, (255,255,255))
            screen.blit(imgText,event.pos)
            pygame.display.update()
        if event.type == MOUSEBUTTONDOWN:
            line_start = event.pos
        if event.type == MOUSEBUTTONUP:
            line_end = event.pos
            pygame.draw.line(screen, (255, 0, 0), line_start, line_end)
            pygame.display.update()

Supongo que te gusta

Origin blog.csdn.net/hou09tian/article/details/133386530
Recomendado
Clasificación