除了监听事件,完全不明白如何实现获取鼠标位置,但是在事件队列为空的情况下,这是如何实现的呢?
pygamers 的 pysdl文档建议使用sdl2.mouse.SDL_GetMouseState()
(此处的文档),但此功能实际上需要您要询问的光标的 x、y 坐标。同时,调用sdl2.mouse.SDL_GetCursor()
返回一个游标对象,但我找不到从中获取其坐标的方法(即它只是包装了一个 C 对象,因此它具有一个空.__dict__
属性)。
我一直在尝试我能想到的一切,但我以前从未用 C 编程过。我试图生成的简单包装函数只是:
def mouse_pos(self):
# ideally, just return <some.path.to.mouse_x_y>
event_queue = sdl2.SDL_PumpEvents()
state = sdl2.mouse.SDL_GetMouseState(None, None) # just returns 0, so I tried the next few lines
print state
for event in event_queue:
if event.type == sdl2.SDL_MOUSEMOTION:
# this works, except if the mouse hasn't moved yet, in which case it's none
return [event.x, event.y]