我如何用Python控制键盘和鼠标?

我如何控制Python中的鼠标和键盘?

这个想法是和Java中的Robot()类一样 。 能够说:将鼠标从这里移动到这里,点击那里,写在屏幕上的任何东西。

对于Windows有win32api,但我主要使用Linux。

对于Linux有Xlib,但它也适用于键盘? (只发现鼠标的参考)

有没有跨平台的解决scheme? (Linux,Windows甚至OS X将是最好的。)

我使用dogtail( https://fedorahosted.org/dogtail/ )来做这样的事情,使用这个我已经为我的linux(ubuntu)应用程序创建了一个自动测试fromework。 该框架将按钮和类型点击到文本字段中。

请参阅gedit示例, https://fedorahosted.org/dogtail/browser/examples/gedit-test-utf8-procedural-api.py

所以就用dogtail吧

dogtail.rawinput.click(100, 100) 

这完全适用于…至少在Mac上。 这是一个点击和拖动等,但可以相应地加装。

 #!/usr/bin/python import sys import time from Quartz.CoreGraphics import * # imports all of the top-level symbols in the module def mouseEvent(type, posx, posy): theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft) CGEventPost(kCGHIDEventTap, theEvent) def mousemove(posx,posy): mouseEvent(kCGEventMouseMoved, posx,posy); def mouseclickdn(posx,posy): mouseEvent(kCGEventLeftMouseDown, posx,posy); def mouseclickup(posx,posy): mouseEvent(kCGEventLeftMouseUp, posx,posy); def mousedrag(posx,posy): mouseEvent(kCGEventLeftMouseDragged, posx,posy); ourEvent = CGEventCreate(None); currentpos=CGEventGetLocation(ourEvent); # Save current mouse position mouseclickdn(60, 100); mousedrag(60, 300); mouseclickup(60, 300); time.sleep(1); mousemove(int(currentpos.x),int(currentpos.y)); # Restore mouse position 

Python论坛为您提供了一个互动的主题: Python论坛

编辑:也有一个关于鼠标控制stackoverflow interessting问题…也许这是一个很好的起点.. 鼠标控制与Python

其中一个答案是指一个Linux的例子…这将带你到一个不错的博客条目。

对于鼠标,我发现似乎工作的pymouse (我还没有完全尝试,点击需要一个小的黑客,参考问题)

对于键盘,我不确定Xlib可以做这个工作。 我仍然在寻找如何写东西,但你可以捕捉关键事件,如这里或使用Xlib在C 这里解释(但我不知道C)。

这里是一个只在gnome上工作的例子(还不够好)

在pymouse,他们有一个很好的方式,使其在3个不同的平台上工作,但需要做3代码…

对于Linux有Xlib,但它也适用于键盘? (只发现鼠标的参考)

是的,它也适用于键盘。

对于控制台尝试ncurses或俚语。 在其他情况下,尝试PyQt,PyGtk,TkInter。

所有这个解决方案都是跨平台的,可以在任何地方工作。

在Linux,Windows和Mac上的跨平台解决方案是autopy。 https://github.com/msanders/autopy/

它允许控制鼠标和键盘,截图,并找到较大的位图小的位图,应该是非常方便的,如果你想自动化一些你不能控制的GUI应用程序。

我可以建议你PyAutoGUI ,它允许完全控制鼠标和键盘,并获得屏幕截图,甚至你可以在屏幕上定位图像(是的,如:哪里的按钮?),非常有用的自动点击动态。

请享用 ;-)