鼠标运动跟踪程序与python

时间:2014-05-08 07:32:40

标签: python pygame mouseevent mouse mousemove

我正在尝试在各种应用程序(如桌面或某些Web应用程序)上跟踪鼠标移动。这是为了理解和捕获用户行为(那些计算机文盲的用户,试图了解他们的行为方式和与系统的交互)。例如,如果我让这样的用户坐在桌面前离开他,我的程序应该跟踪他用鼠标做出的所有动作,我可以稍后将其与系统的设计相对应。

我在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 :(得分:0)

是的,你可以在这种情况下改变你的代码,这样如果鼠标位于坐标(300,200),那么它将屏幕大小改为(400,500)

P.S。看看我在开头添加的内容:

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()

答案 1 :(得分:0)

我有类似的问题。我意识到,如果窗口未聚焦或当前鼠标不在窗口中,则pygame无法记录日志或跟踪鼠标事件。如果您正在寻找一个键盘记录器/鼠标事件记录器,请尝试使用pyHook在pynpnut上,具体取决于您使用的是python 2还是3。这些模块可以与pip一起安装