使用Python的鼠标运动追踪程序

3 投票
2 回答
13033 浏览
提问于 2025-04-18 05:47

我正在尝试跟踪鼠标在各种应用程序上的移动,比如桌面或者一些网页应用。这是为了理解和捕捉用户的行为,特别是那些对电脑不太熟悉的用户,想看看他们是如何与系统互动的。例如,如果我让这样的用户坐在桌子前,然后离开,我的程序应该能够记录下他们用鼠标做的所有动作,之后我可以把这些动作和系统的设计进行对比。

为此,我用pygame写了一个小程序。

import pygame

x = y = 0
running = 1
screen = pygame.display.set_mode((640, 400))

while running:
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        running = 0
    elif event.type == pygame.MOUSEMOTION:
        print "mouse at (%d, %d)" % event.pos

    screen.fill((0, 0, 0))
    pygame.display.flip()

我想改变“screen = pygame.display.set_mode((640, 400))”这一行。我不想让pygame打开一个新的窗口。我希望在我正在使用的同一个窗口中跟踪鼠标的移动。即使我关闭我的编辑器,这个程序也应该继续运行。不能有单独的屏幕。我该怎么做呢?

2 个回答

0

我遇到过类似的问题。我发现如果pygame窗口没有被选中,或者鼠标不在这个窗口上,它就无法记录键盘输入或跟踪鼠标事件。如果你想找一个可以记录键盘和鼠标事件的工具,可以试试pyHook或者pynput,这取决于你使用的是Python 2还是3。这些模块可以通过pip来安装。

0

是的,你可以这样做。在这个事件中,我修改了你的代码,让它在鼠标坐标是(300, 200)的时候,屏幕的大小会变成(400, 500)。

附注:看看我在开头加了什么:

import pygame
from pygame.locals import *  #just so that some extra functions work
pygame.init() #this turns pygame 'on'

x = y = 0
running = 1
screen = pygame.display.set_mode((640, 400))

while running:
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        running = 0
    elif event.type == pygame.MOUSEMOTION:
        print "mouse at (%d, %d)" % event.pos
        if event.pos == (300,200):
            screen = pygame.display.set_mode((400, 500))
    screen.fill((0, 0, 0))
    pygame.display.flip()

撰写回答