Pygame鼠标事件详解

发布时间:2024-12-22 04:06

如何正确使用鼠标:将鼠标放在桌面上,左键点击启动应用或选择文件 #生活常识# #日常生活技巧# #基础电脑操作#

本节视频

【零基础 Python体验课】第四季 pygame游戏开发

Event事件检测——鼠标

按下一个键,点一下鼠标,都是事件,一个游戏中需要很多事件,比如点击一下屏幕,就是一个事件,鼠标的滑动,也是事件,于是我们需要在死循环中侦测事件的发生去处理。

首先先不处理,先说说怎么检测事件,游戏最小系统中的pygame.QUIT是一个点击关闭按钮的事件,是在for循环中检测到的,for循环检测原理是让循环变量event在每次检测到的事件列表(即pygame.event.get())中遍历。于是把遍历到的事件(即event)都输出,看看结果。

while True: for event in pygame.event.get(): print(event) if event.type == pygame.QUIT: exit() 12345

这是死循环部分,运行,结果说不清楚,看动图

在这里插入图片描述
诶?为什么看不见鼠标指针,啥子回事?反正看后面的解释吧

发现鼠标移动能触发很多事件,pos是坐标,按下鼠标左键或右键,会触发两个事件,按下和抬起,键盘也是按下和抬起,按键会多一个ascll参数。把这个程序保存为一个工具,如果你需要什么事件的名字,拿起这个程序实验就知道了。

鼠标事件

MOUSEMOTION:鼠标移动MOUSEBUTTONDOWN:鼠标按下MOUSEBUTTONUP:鼠标抬起返回鼠标位置:event.pos

我们实验鼠标按下出现一个球,松开球跟着也消失,所以需要探测两个事件,一个是鼠标按下,一个是鼠标抬起,代码实现很简单

for event in pygame.event.get(): # print(event) if event.type == pygame.QUIT: exit() elif event.type == pygame.MOUSEBUTTONDOWN: pygame.draw.circle(window, (255, 255, 0), (x, y), r) pygame.display.update() elif event.type == pygame.MOUSEBUTTONUP: pygame.draw.circle(window, (255, 255, 255), (x, y), r) pygame.display.update() # elif event.type == pygame.MOUSEBUTTONDOWN: # print("鼠标按下 ", event.pos) 123456789101112

可以实现,于是需要进阶,做一个可以拖拽的小球?按下鼠标并拖拽松开小球消失。这时候需要一个标记变量,在按下的时候标记为True,抬起标记为False,判断MOUSEMOTION的时候看看标记,如果是True,就可以拖拽,如果为False就不能,让小球跟着鼠标动起来的原理也很简单,首先用白色覆盖上一次画的球,再将临时坐标等于鼠标事件坐标(即event.pos),重新画圆,记住每次更改界面都需要刷新屏幕pygame.display.update()。

如何获取鼠标事件坐标,获取鼠标坐标的方法叫做pos,完整使用方法

while True: for event in pygame.event.get(): if event.type == pygame.MOUSEMOTION: print(event.pos) # 当前在屏幕中的坐标 1234

这次贴出完整代码

import pygame WIN_WIDTH = 400 WIN_HEIGHT = 600 pygame.init() window = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT)) pygame.display.set_caption("事件检测") titlelineico = pygame.image.load("img/airplane.ico") # 导入窗口图标,规格:32x32,格式:.ico pygame.display.set_icon(titlelineico) # 设置窗口图标 window.fill((255, 255, 255)) pygame.display.flip() y = 200 x = 200 r = 50 flag = False while True: for event in pygame.event.get(): # print(event) if event.type == pygame.QUIT: exit() elif event.type == pygame.MOUSEBUTTONDOWN: flag = True pygame.draw.circle(window, (255, 255, 0), (x, y), r) pygame.display.update() elif event.type == pygame.MOUSEBUTTONUP: flag = False pygame.draw.circle(window, (255, 255, 255), (x, y), r) pygame.display.update() if event.type == pygame.MOUSEMOTION and flag: pygame.draw.circle(window, (255, 255, 255), (x, y), r) print(event, flag) x, y = event.pos pygame.draw.circle(window, (255, 255, 0), (x, y), r) pygame.display.update() # elif event.type == pygame.MOUSEBUTTONDOWN: # print("鼠标按下 ", event.pos) # 491 <Event(2-KeyDown {'unicode': '', 'key': 273, 'mod': 0, 'scancode': 72, 'window': None})> # 492 <Event(3-KeyUp {'key': 273, 'mod': 0, 'scancode': 72, 'window': None})> # 493 <Event(2-KeyDown {'unicode': '', 'key': 274, 'mod': 0, 'scancode': 80, 'window': None})> # 494 <Event(3-KeyUp {'key': 274, 'mod': 0, 'scancode': 80, 'window': None})>

1234567891011121314151617181920212223242526272829303132333435363738394041

在这里插入图片描述

下一节讲键盘的事件

网址:Pygame鼠标事件详解 https://www.yuejiaxmz.com/news/view/536594

相关内容

Pygame从0实战5
(自用)Pygame设置窗口图标
pyautogui — GUI 自动化工具,用于模拟键盘和鼠标事件。
python+opencv+mfcc+pygame+arduino多进程=简单的音视频采集分析系统
电脑桌面图标和文件按下鼠标左键无法无法拖动解决方法
Python可以做什么?你所不知道的Python——生活中的奇妙用途
linux 桌面usb鼠标显示
图解手机、电脑无线连接并用电脑键盘、鼠标操控手机的简便方法
鼠标的正确使用与日常维护
鼠标锁定工具下载 lenovo quick clean(键鼠锁定)V1.02.0051 中文安装版 下载

随便看看