如何使用Python在Mac中控制鼠标?

2023-11-25

在 OS X 上使用 Python 移动鼠标(并可能单击)的最简单方法是什么?

这只是为了快速原型设计,它不必很优雅。


尝试以下代码:这一页。它定义了几个函数,mousemove and mouseclick,它与 Apple 在 Python 和平台的 Quartz 库之间的集成挂钩。

该代码适用于 10.6,我在 10.7 上使用它。这段代码的好处是它会生成鼠标事件,而某些解决方案则不会。我使用它通过将鼠标事件发送到 Flash 播放器中的已知按钮位置来控制 BBC iPlayer(我知道非常脆弱)。尤其需要鼠标移动事件,否则 Flash 播放器永远不会隐藏鼠标光标。功能类似于CGWarpMouseCursorPosition不会这样做。

from Quartz.CoreGraphics import CGEventCreateMouseEvent
from Quartz.CoreGraphics import CGEventPost
from Quartz.CoreGraphics import kCGEventMouseMoved
from Quartz.CoreGraphics import kCGEventLeftMouseDown
from Quartz.CoreGraphics import kCGEventLeftMouseUp
from Quartz.CoreGraphics import kCGMouseButtonLeft
from Quartz.CoreGraphics import kCGHIDEventTap

def mouseEvent(type, posx, posy):
        theEvent = CGEventCreateMouseEvent(
                    None, 
                    type, 
                    (posx,posy), 
                    kCGMouseButtonLeft)
        CGEventPost(kCGHIDEventTap, theEvent)

def mousemove(posx,posy):
        mouseEvent(kCGEventMouseMoved, posx,posy);

def mouseclick(posx,posy):
        # uncomment this line if you want to force the mouse 
        # to MOVE to the click location first (I found it was not necessary).
        #mouseEvent(kCGEventMouseMoved, posx,posy);
        mouseEvent(kCGEventLeftMouseDown, posx,posy);
        mouseEvent(kCGEventLeftMouseUp, posx,posy);

这是上面页面中的代码示例:

##############################################################
#               Python OSX MouseClick
#       (c) 2010 Alex Assouline, GeekOrgy.com
##############################################################
import sys
try:
        xclick=intsys.argv1
        yclick=intsys.argv2
        try:
                delay=intsys.argv3
        except:
                delay=0
except:
        print "USAGE mouseclick [int x] [int y] [optional delay in seconds]"
        exit
print "mouse click at ", xclick, ",", yclick," in ", delay, "seconds"
# you only want to import the following after passing the parameters check above, because importing takes time, about 1.5s
# (why so long!, these libs must be huge : anyone have a fix for this ?? please let me know.)
import time
from Quartz.CoreGraphics import CGEventCreateMouseEvent
from Quartz.CoreGraphics import CGEventPost
from Quartz.CoreGraphics import kCGEventMouseMoved
from Quartz.CoreGraphics import kCGEventLeftMouseDown
from Quartz.CoreGraphics import kCGEventLeftMouseDown
from Quartz.CoreGraphics import kCGEventLeftMouseUp
from Quartz.CoreGraphics import kCGMouseButtonLeft
from Quartz.CoreGraphics import kCGHIDEventTap
def mouseEventtype, posx, posy:
        theEvent = CGEventCreateMouseEventNone, type, posx,posy, kCGMouseButtonLeft
        CGEventPostkCGHIDEventTap, theEvent
def mousemoveposx,posy:
        mouseEventkCGEventMouseMoved, posx,posy;
def mouseclickposx,posy:
        #mouseEvent(kCGEventMouseMoved, posx,posy); #uncomment this line if you want to force the mouse to MOVE to the click location first (i found it was not necesary).
        mouseEventkCGEventLeftMouseDown, posx,posy;
        mouseEventkCGEventLeftMouseUp, posx,posy;
time.sleepdelay;
mouseclickxclick, yclick;
print "done."
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Python在Mac中控制鼠标? 的相关文章

随机推荐

  • Scala 解析器标记分隔符问题

    我正在尝试为下面的命令定义语法 object ParserWorkshop def main args Array String ChoiceParser todo link todo to database ChoiceParser to
  • 在 Linq 查询中调用类方法

    我有一个名为 GetAge DateTimebirthDay 的方法 我想在 Linq 查询中通过传递生日来使用此方法 并根据返回的年龄值需要执行一些逻辑 我想要以下 LINQ 格式的查询 from customer in contetx
  • 迭代@IntDef、@StringDef或任何@Def类中的值

    考虑这个类 public class MyClassOfMystery public static final int NO FLAGS 0 public static final int FIRST FLAG 1 public stati
  • Galaxy S4 上的浮动触摸

    三星 Galaxy S4 有 浮动触摸 功能 即使没有触摸屏幕也可以检测到手指 我想在按钮上触发一个事件 btn1 当手指经过时将其悬停 我尝试使用OnHoverListener but onHover当MotionEvent is Mot
  • 如何撤消 Git 中最近的本地提交?

    我不小心提交了错误的文件Git 但尚未将提交推送到服务器 我如何撤消这些提交local存储库 撤消提交并重做 git commit m Something terribly misguided 0 Your Accident git res
  • Oracle:Order by Union 返回 ORA-00933:SQL 命令未正确结束

    我在同时使用 Oracle 的 union 和 order by 子句时遇到问题 我有两个复杂的查询 其中包含子查询 每个查询都有一个 order by 子句 我需要合并两者的输出并返回结果 当我运行它时 我收到错误 ORA 00933 S
  • 使用扩展语法创建数组

    这是我在 React 书中找到的一个 JavaScript 箭头函数 const createArray length gt Array length 为什么不简单地返回一个新数组呢 const createArray length gt
  • 从故事板中的外部 xib 文件加载视图

    我想在故事板中的多个视图控制器中使用视图 因此 我考虑在外部 xib 中设计视图 以便更改反映在每个视图控制器中 但是如何从故事板中的外部 xib 加载视图 这是否可能 如果不是这种情况 还有哪些其他替代方案可以满足上述情况 我的完整示例是
  • 从具有行优先顺序的数组创建特征矩阵

    我有一个双精度数组 我想使用 Eigen 库创建一个 4 4 矩阵 我还想指定数据按行优先顺序存储 我怎样才能做到这一点 我已尝试以下操作 但无法编译 double data 16 Eigen Matrix4d M Eigen Map
  • 在 python 中将 XML 编辑为字典?

    我正在尝试从 python 中的模板 xml 文件生成自定义 xml 文件 从概念上讲 我想读入模板 xml 删除一些元素 更改一些文本属性 然后将新的 xml 写入文件 我希望它能像这样工作 conf base ConvertXmlToD
  • file_get_contents 会正常失败吗?

    I need file get contents具有容错能力 例如 如果 url喂给它返回一个404 在它发出警告之前告诉我 这可以做到吗 任何使用 HTTP 包装器访问远程文件 就好像它是本地文件一样 的函数都会自动生成一个名为的本地变量
  • 在java文件外部定义内部类

    我想创建一个类 ClassB 作为内部类ClassA 但我想写在外面ClassA java file 我怎样才能做到这一点 这将是很多内部类 并且ClassA java文件将是enormous UPDATE我真正想做的是定义十个类 它们只能
  • 有没有办法为 Spring HATEOAS `ControllerLinkBuilder` 设置主机和端口?

    Spring HATEOAS 提供了方便ControllerLinkBuilder创建指向控制器方法的链接 这些方法将作为 href 添加到返回给客户端的 JSON XML 中 例如 resource add linkTo methodOn
  • 跟踪(直接)文件下载的最佳方法

    跟踪直接文件下载的最佳方法是什么 Google Analytics 仅适用于 JavaScript 无法跟踪直接文件下载 最好的是安全且自己的托管解决方案 放心使用 htaccess RewriteEngine on RewriteRule
  • 为什么ORACLE很多表默认12c?

    创建一个新的数据库 基础和高级 这是我第一次接触Oracle 我不知道为什么有那么多表 触发器 视图和其他对象 而只想创建一个空的关系数据库 有没有其他方法可以做到这一点 或者有什么我错过理解的事情 谢谢 Capture 这些对象的所有者是
  • 如何删除 vscode 右侧滚动条上的符号?

    How can I remove the symbols on the right scrollbar in VSCode As per 这个 Github 问题 最近的解决方案是使用 useworkbench colorCustomiza
  • 特征中的 typedef 与类中的 typedef

    我正在出于教育目的查看 Eigen 源代码 我注意到对于每个具体的类模板X在层次结构中 有一个internal traits
  • 使用带有 Doctrine 2 的装置时发生致命错误

    我是 Symblog 2 初学者 我正在关注本教程适用于 Symblog2 我已经创建了我的数据模型并尝试使用将测试数据填充到我的数据库中学说 2 赛程 我下载了必要的包并将以下内容添加到我的autoload php Doctrine Co
  • PowerMockito 模拟单个静态方法并在另一个静态方法中返回对象

    我已经编写了测试用例来使用 PowerMockito 的 mockStatic 功能来模拟静态类和方法 但我正在努力在另一个静态方法中模拟一个静态方法 我确实看到了一些例子 包括this但他们都没有真正帮助我 或者我不理解实际功能 我一无所
  • 如何使用Python在Mac中控制鼠标?

    在 OS X 上使用 Python 移动鼠标 并可能单击 的最简单方法是什么 这只是为了快速原型设计 它不必很优雅 尝试以下代码 这一页 它定义了几个函数 mousemove and mouseclick 它与 Apple 在 Python