繁体   English   中英

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

[英]How can I control the keyboard and mouse with Python?

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

我们的想法与Java中的Robot()类相同。 能够说:将鼠标从这里移动到这里,点击那里,写出屏幕上的任何内容。

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

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

有跨平台的解决方案吗? (Linux,Windows甚至OS X都会很棒。)

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

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

所以只需使用dogtail例如

dogtail.rawinput.click(100, 100)

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

例如:

>>> import pyautogui
>>> screenWidth, screenHeight = pyautogui.size()
>>> pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

查看简介页面

这完全适用于...至少在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也有一个有趣的问题...也许这是一个很好的起点.. 用Python控制鼠标

其中一个答案是引用一个Linux示例...它引导您进入一个不错的博客条目。

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

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

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

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

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

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

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

是的,它也适用于键盘。

linux,windows和mac上的跨平台解决方案是autopy。 https://github.com/msanders/autopy/

它允许控制鼠标和键盘,截取屏幕截图,并在较大的位图上查找小位图,如果你想自动化一些你无法控制的gui应用程序,它应该非常方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM