详解Pygame 鼠标事件

  • Post category:Python

Pygame 鼠标事件是 Pygame 提供的一种事件类型,可以在用户与应用程序交互时检测鼠标事件。下面是 Pygame 鼠标事件的详细讲解:

鼠标事件类型

Pygame 支持以下鼠标事件类型:

  • MOUSEMOTION:当鼠标移动时触发。
  • MOUSEBUTTONDOWN:当鼠标按下按钮时触发。
  • MOUSEBUTTONUP:当鼠标松开按钮时触发。
  • MOUSEWHEEL:当滚动鼠标轮时触发。

鼠标位置

在鼠标事件中,可以通过 pygame.mouse.get_pos() 获取鼠标当前位置。该方法返回一个元组,包括鼠标在屏幕上的 x 坐标和 y 坐标。

鼠标按钮

在鼠标事件中,可以通过 event.button 获取鼠标事件对应的按钮。按钮编号从 1 开始,左键为 1,右键为 3,中键为 2。

示例一

下面是一个简单的示例,演示如何检测鼠标点击:

import pygame

pygame.init()

screen = pygame.display.set_mode((400, 400))
pygame.display.set_caption("鼠标事件示例")

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if event.button == 1:  # 检测左键点击
                print("左键点击:", pygame.mouse.get_pos())
            elif event.button == 3:  # 检测右键点击
                print("右键点击:", pygame.mouse.get_pos())

    screen.fill((255, 255, 255))
    pygame.display.flip()

pygame.quit()

上述代码创建了一个窗口,并在窗口中打印鼠标左键和右键点击事件的位置。

示例二

下面是另一个示例,演示如何跟踪鼠标移动并绘制轨迹:

import pygame

pygame.init()

screen = pygame.display.set_mode((400, 400))
pygame.display.set_caption("鼠标事件示例")

running = True
points = []
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEMOTION:
            points.append(pygame.mouse.get_pos())

    screen.fill((255, 255, 255))
    pygame.draw.lines(screen, (0, 0, 0), False, points, 2)
    pygame.display.flip()

pygame.quit()

上述代码创建了一个窗口,并在窗口中绘制从鼠标起始位置到当前位置的线条,形成了鼠标移动的轨迹。