代码之家  ›  专栏  ›  技术社区  ›  Martin Trigaux

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

  •  11
  • Martin Trigaux  · 技术社区  · 14 年前

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

    我们的想法是 Robot() class 在Java中。可以说:将鼠标从这里移到这里,点击那里,写下屏幕上的任何内容。

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

    对于Linux,有xlib,但它也适用于键盘吗?(只找到对鼠标的引用)

    有跨平台解决方案吗?(Linux、Windows甚至OS X都是最好的。)

    8 回复  |  直到 14 年前
        1
  •  6
  •   Anurag Uniyal    14 年前

    我用狗尾巴 https://fedorahosted.org/dogtail/ )为了做到这一点,我用它为我的Linux(Ubuntu)应用程序创建了一个自动测试。该框架将按钮和类型单击到文本字段中。

    见Gedit示例, https://fedorahosted.org/dogtail/browser/examples/gedit-test-utf8-procedural-api.py

    所以只要用狗尾巴,例如

    dogtail.rawinput.click(100, 100)
    
        2
  •  2
  •   Alex Gray    13 年前

    这完全有效…至少在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
    
        3
  •  2
  •   kenorb Sergej Andrejev    6 年前

    我可以建议你 PyAutoGUI 它允许完全控制鼠标和键盘并获取屏幕截图,甚至可以在屏幕中定位图像(例如:按钮在哪里?),对于动态地自动化单击非常有用。它适用于Windows、MacOS和Linux。

    例如:

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

    退房 Introduction page .

        4
  •  1
  •   Community Egal    7 年前

    下面是来自Python论坛的一个有趣的主题: Python Forum

    编辑: 关于stackoverflow还有一个有趣的关于鼠标控制的问题…也许这是一个好的起点。 Mouse Control with Python

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

        5
  •  1
  •   Martin Trigaux    14 年前

    为了老鼠,我找到了 pymouse 这似乎是可行的(我还没有完全尝试过,点击需要一个小黑客,cf问题)

    对于键盘,我不确定XLIB是否能胜任这项工作。我仍在研究如何写一些东西,但你可以按照说明抓住关键事件。 here 或在C here 使用XLIB(但我不知道C)。

    here 是一个只在GNOME上工作的例子(还不够好)

    在pymouse中,他们有一个很好的方法让它在3个不同的平台上工作,但需要生成3个代码…

        6
  •  1
  •   vitaly.v.ch    14 年前

    对于Linux,有xlib,但它也适用于键盘吗?(只找到对鼠标的引用)

    是的,它也适用于键盘。

        7
  •  1
  •   vitaly.v.ch    14 年前

    对于控制台,请尝试使用ncurses或俚语。在其他情况下,请尝试pyqt、pygtk和tkinter。

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

        8
  •  0
  •   Eloims    9 年前

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

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