【PyGame】4 PyGame 鼠标键盘事件

事件处理的时机

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

# 主循环
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")
发布了195 篇原创文章 · 获赞 47 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/rocshaw/article/details/103141975