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()
相关推荐
li.siyuan4 天前
python飞机大战游戏.py
python·游戏·pygame
小馒头学python4 天前
【童年经典小游戏】使用Python实现经典贪吃蛇游戏
python·游戏·pygame
从以前4 天前
Python 实现炸弹人游戏
开发语言·python·pygame
豆本-豆豆奶5 天前
用python实现滑雪小游戏,附源码
开发语言·python·pygame
西农小陈5 天前
Python-基于Pygame的小游戏(滑雪大冒险)(一)
python·游戏·pycharm·游戏程序·pygame
从以前5 天前
python练习之“用 Python 的 Pygame 库创建五子棋游戏”
开发语言·python·游戏·pygame
fegxg7 天前
AirSim 使用Pygame鼠标键盘控制无人机
python·无人机·pygame
郭老师的小迷弟雅思莫了15 天前
Python实现中国象棋
开发语言·python·pygame
Chinese Red Guest17 天前
python写猜数字
java·服务器·开发语言·前端·数据库·python·pygame