在Python上模拟鼠标点击

42

我目前正在将我的任天堂Wii遥控器(有点悲伤)制作成电脑鼠标。我已经成功地让Nunchuk杆控制实际上在屏幕上向上、向下、向左、向右移动鼠标!这太令人兴奋了。现在我卡住了。

当我按A键时,我希望用Python左/右击某些物品。当我去搜索时,它只提供了tkinter?

所以我的问题是,我该调用什么来使Python在桌面上进行左/右键单击操作,如果可能的话,可以提供一小段代码片段吗?

谢谢你的帮助!

注:我想我忘记提到这是为Linux系统。


2
这可能取决于操作系统或窗口系统。理想情况下,应该有 Python 绑定到您的操作系统的窗口系统。通常,参数与 C/C++/C#/Objective-C 调用非常相似,文档实际上是以这种语言编写的。或者你可能会很幸运地找到实际的 Python 文档。至少发布一下你所在的操作系统,这样其他人就可以帮助你了。 - aaronasterling
可能这个答案不太相关,但是也许你可以看一下 Sikuli 项目的源代码。它是 jython 语言编写的,但是... - joaquin
看起来是一个不错的项目..你用什么来移动鼠标? 你是通过Python实现的,还是用其他方式?当然,你在哪个操作系统/桌面环境/窗口管理器上运行? 顺便说一下,前段时间我找到了一个Xorg驱动程序,应该可以将Wiimote用作鼠标(用于ir-pen交互式白板项目),也许它可以胜任这项工作..? - redShadow
我正在使用Python的libX11移动鼠标。我无法使用IR,所以这就是为什么我需要能够点击的原因。 - dbdii407
2
这是另一个问题中提到的内容,它模拟鼠标点击。也许你可以看一下他们是如何实现的:http://github.com/msanders/autopy#readme - aaronasterling
6个回答

34

你可以使用PyMouse,它现在已经与PyUserInput合并。我通过pip安装了它:

  1. apt-get install python-pip

  2. pip install pymouse

在某些情况下,它使用光标,在其他情况下则模拟鼠标事件而不使用光标。

from pymouse import PyMouse

m = PyMouse()
m.position() #gets mouse current position coordinates
m.move(x,y)
m.click(x,y) #the third argument "1" represents the mouse button
m.press(x,y) #mouse button press
m.release(x,y) #mouse button release

你也可以指定使用哪个鼠标按钮。例如左键:

m.click(x,y,1)

请记住,在Linux上需要Xlib。


1
Pymouse ModuleNotFoundError: No module named unix。请尝试安装pynput - Mihai.Mehe
最合格的pymouse继任者是pyuserinput - undefined

4

PyAutoGui非常出色,感谢Al Sweigart...

这是我的一个示例...

import pyautogui

pyautogui.FAILSAFE = False

for x in range(555, 899):
    pyautogui.moveTo(x, x)

4

evdev包提供了对Linux输入处理子系统的部分绑定。它还包括一个面向Python的uinput接口。

使用evdev发送相对运动事件和左键单击的示例:

from evdev import UInput, ecodes as e

capabilities = {
    e.EV_REL : (e.REL_X, e.REL_Y), 
    e.EV_KEY : (e.BTN_LEFT, e.BTN_RIGHT),
}

with UInput(capabilities) as ui:
    ui.write(e.EV_REL, e.REL_X, 10)
    ui.write(e.EV_REL, e.REL_Y, 10)
    ui.write(e.EV_KEY, e.BTN_LEFT, 1)
    ui.syn()

2
您可以从PyPI安装PyAutoGUI GUI自动化模块(运行pip install pyautogui),然后调用pyautogui.click()来单击屏幕上某个X和Y坐标:
>>> import pyautogui
>>> pyautogui.click(50, 100)
>>> pyautogui.moveTo(200, 200)

PyAutoGUI可以在Windows、Mac和Linux上运行,并支持Python 2和3。它还可以模拟键盘,进行鼠标拖动,截屏,并对截屏进行简单的图像识别。

完整文档请查看https://pyautogui.readthedocs.org/


2

打开终端并进入 cd /usr/share/pyshared/twisted/protocols/mice
也许这个 __init__.pymouseman.py 的python脚本能够帮到你,去看看吧。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接