Pygame中监控鼠标动作的方法

Pygame中监控键盘按键的方法_pygame获取键盘输入-CSDN博客中提到,通过在while True循环中获取队列中事件的方法监控键盘动作。监控鼠标动作的方法与监控键盘动作的方法相同。

相关连接1 队列与事件的相关知识,请参考

Pygame中监控键盘按键的方法_pygame获取键盘输入-CSDN博客

1 鼠标事件的分类

队列中的鼠标事件主要分为3类:移动、按下和松开。这三个事件对应的值分别是MOUSEMOTION、MOUSEBUTTONDOWN和MOUSEBUTTONUP。

2 对于鼠标移动事件的处理

通过对鼠标移动事件的处理,实现实时显示鼠标坐标的功能,如图1所示。

图1 实时显示鼠标坐标

在while True循环中,首先通过pygame.event.get()从队列中获取事件,之后通过if语句对事件类型进行判断,代码如下所示。

python 复制代码
if event.type == MOUSEMOTION:

此时,表示鼠标正在屏幕中移动,此时,首先对屏幕进行填充,把之前显示的坐标覆盖掉

python 复制代码
screen.fill((0, 0, 255))

之后,构造要显示的坐标。

python 复制代码
coordinate = '(%d,%d)'%event.pos

其中,event.pos是一个元组,包含了鼠标当前的横坐标和纵坐标;最后,将构造好的鼠标坐标在屏幕上显示出来。

python 复制代码
imgText = font.render(coordinate, True, (255,255,255))
screen.blit(imgText,event.pos)
pygame.display.update()

相关链接2 font的使用方法,请参考

Pygame中监控键盘按键的方法_pygame获取键盘输入-CSDN博客

3 鼠标按下和松开事件

通过监控鼠标按下和松开事件,可以实现在屏幕上划线的功能。即以鼠标按下为起点,松开为终点画一条直线,如图2所示。

图2 屏幕画线

当按下鼠标时,其对应的事件是MOUSEBUTTONDOWN,此时将鼠标坐标保存为直线的起点。

python 复制代码
line_start = event.pos

当松开鼠标时,其对应的事件是MOUSEBUTTONUP,此时将鼠标坐标保存为直线的终点,根据起点和终点,通过pygame.draw.line()方法,在屏幕中画线。

python 复制代码
line_end = event.pos
pygame.draw.line(screen, (255, 0, 0), line_start, line_end)
pygame.display.update()

其中,pygame.draw.line()方法的第一个参数表示指定的屏幕,第二个参数表示线的颜色;第三个和第四个参数分别表示线的起点和终点。

4 完整代码

以上提到的完整代码如下所示。

python 复制代码
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()
相关推荐
拾忆-eleven16 小时前
C语言实战:用Pygame打造高难度水果消消乐游戏
c语言·python·pygame
@正在学习驰骋的小马20 小时前
九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)
python·游戏·pygame
Tech Synapse6 天前
迷宫求解机器人:基于Pygame与Q-learning的强化学习实战教程
python·机器人·pygame·强化学习
EvanSun__9 天前
python学习 -- 综合案例1:设计一款基于python的飞机大战小游戏
python·学习·pygame
@正在学习驰骋的小马10 天前
一、小白如何用Pygame制作一款跑酷类游戏(成品展示+添加背景图和道路移动效果)
python·游戏·pygame
不要不开心了11 天前
sparkcore编程算子
pytorch·分布式·算法·pygame
Ma_si11 天前
用python写一个简单的射击游戏
python·游戏·pygame
资深设备全生命周期管理12 天前
火影 遇上 python Baby_Brother_GGY
开发语言·python·pygame
流云一号13 天前
Python实现贪吃蛇一
开发语言·python·pygame
csdn_aspnet16 天前
windows 安装 pygame( pycharm)
python·pycharm·pygame