【问题标题】:AttributeError: 'Event' object has no attribute 'mouse_pos'AttributeError:“事件”对象没有属性“mouse_pos”
【发布时间】:2019-08-25 16:18:09
【问题描述】:

我只想随时保存鼠标位置。为什么这个简单的代码不起作用?

import pygame

screen = pygame.display.set_mode((500,500))
screen.fill((255,255,255))

while True:
    ev = pygame.event.get()
    for event in ev:
        pos = pygame.mouse.get_pos()
        if event.type != pygame.NOEVENT:
            mouse_pos = pygame.mouse.get_pos()      
            x, y = event.mouse_pos
            print(x, y)

【问题讨论】:

  • 此代码有效,除了拼写错误x, y = event.mouse_pos 应为x, y = mouse_pos。你需要处理pygame.QUIT 事件。我不确定您是否需要在 != NOEVENT 块内进行点跟踪。
  • 不同的事件有不同的类型和不同的元素。有些事件有鼠标位置,有些是按下的键,有些可能有不同的东西。您必须先检查您是否有 event.type 可能有 mouse_pos,然后才能获得 event.mouse_pos - 请参阅文档 events

标签: events pygame attributes attributeerror mouse-position


【解决方案1】:

可以在事件处理循环之外跟踪鼠标位置。

import pygame
import sys

screen = pygame.display.set_mode((500,500))
screen.fill((255,255,255))

last_pos = (-1,-1)

while True:
    # handle user events
    ev = pygame.event.get()
    for event in ev:
        if event.type == pygame.QUIT:
            sys.exit()

    # track the mouse co-ords
    mouse_pos = pygame.mouse.get_pos()
    if ( mouse_pos != last_pos ):
        x,y = mouse_pos
        print(x, y)
        last_pos = mouse_pos

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2021-04-19
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多