当前位置: 代码迷 >> 综合 >> 【PyGame】4 PyGame 鼠标键盘事件
  详细解决方案

【PyGame】4 PyGame 鼠标键盘事件

热度:12   发布时间:2023-12-16 07:51:36.0

事件处理的时机

在程序主循环开始,我们获取事件并进行处理:

# 主循环
while True:# 事件处理for event in pygame.event.get():if event.type == pygame.QUIT: sys.exit()# 绘制更新图形    screen.fill(black)screen.blit(ball, ballrect)pygame.display.flip()

事件类型

事件类型有很多种,例如: QUIT 和 MOUSEMOTION 等, 这些预定义的事件类型作为常量定义在 pygame.local 模块中,下面这些是最早的事件类型和它们的属性,后面不同的版本又补充了例如手势等事件,具体参考官方文档:

QUIT              none
ACTIVEEVENT       gain, state
KEYDOWN           key, mod, unicode, scancode
KEYUP             key, mod
MOUSEMOTION       pos, rel, buttons
MOUSEBUTTONUP     pos, button
MOUSEBUTTONDOWN   pos, button
JOYAXISMOTION     joy, axis, value
JOYBALLMOTION     joy, ball, rel
JOYHATMOTION      joy, hat, value
JOYBUTTONUP       joy, button
JOYBUTTONDOWN     joy, button
VIDEORESIZE       size, w, h
VIDEOEXPOSE       none
USEREVENT         code

事件处理模式

我们这里基本的事件处理模式:

# 主循环
while True:# 事件处理for event in pygame.event.get():if event.type == pygame.QUIT: sys.exit()# 处理鼠标按下事件if event.type == pygame.MOUSEBUTTONDOWN:print("鼠标按键", event)# 处理鼠标释放if event.type == pygame.MOUSEBUTTONUP:print("鼠标t弹起", event)# 处理鼠标移动if event.type == pygame.MOUSEMOTION:print("鼠标移动", event)# 处理按键if event.type == pygame.KEYDOWN:if event.key == pygame.K_RETURN:print("键盘按键", event)# 另一种处理按键的方式pressedKeys = pygame.key.get_pressed()# print("pressed keys is ", pressedKeys)# 具体某个按键的处理if (pressedKeys[pygame.K_LEFT]):print("Key Left is pressed")