【问题标题】:Mouse motion tracking Program with python带有python的鼠标运动跟踪程序
【发布时间】:2014-05-08 07:32:40
【问题描述】:

我正在尝试在各种应用程序(例如桌面或某些 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 打开一个新窗口。我想要我正在处理的同一个窗口,它会跟踪鼠标的移动。即使我关闭我的编辑器,程序也应该运行。不应有单独的屏幕。我该怎么做?

【问题讨论】:

标签: python pygame mouseevent mouse mousemove


【解决方案1】:

是的,你可以在这种情况下,我已经更改了你的代码,如果鼠标位于坐标 (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()

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我意识到如果窗口不在焦点上,或者鼠标当前不在窗口上,pygame 不能键盘记录或跟踪鼠标事件。如果您正在寻找键盘记录器/鼠标事件记录器,请尝试在 pynpnut 上使用 pyHook,具体取决于您使用的是 python 2 还是 3。这些模块可以使用 pip 安装

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-22
      • 2022-11-10
      • 2019-09-04
      • 2011-03-09
      • 1970-01-01
      • 2013-08-21
      • 2011-07-24
      • 1970-01-01
      相关资源
      最近更新 更多