拓冰建站拓冰建站
首页 / 资讯中心 / 正文

用Python操作你的鼠标和键盘

存在不少小伙伴在使用, 于进行自动化开发期间, 碰到过操控鼠标以及键盘的需求。此功能在当中, 具备好几个能够实现的第三方模块。今天我们就来看看如何用 这个库实现对鼠标和键盘的控制。操作鼠标鼠标的操作, 也就是, 进行点击然后按住不放开, 接着松开, 再执行双击, 之后还需滑动滚轮, 并且要通过移动鼠标来实现各个相应动作等等。取自.鼠标, #进行实例化,从而得到一个能够对鼠标实施操作的对象,鼠标等于, #鼠标.:获取此刻鼠标所处的位置。屏幕左上角的坐标是(0, 0), 而右下角的坐标是(屏幕的宽度, 屏幕的高度), 打印当前鼠标的位置f, 那个位置是(如果坐标小于0, 那么等于0, 在经过移动鼠标赋值给mouse.之后得到的(100, 100)的位置), 输出的结果是当前鼠标位置为某个值, 示例中这个值是(881, 467)。要是超出了屏幕覆盖范围, 那就等同于最大范围, mouse。 (100, 100) # 此手段跟mouse.move(100, 100)等价, 打印(f当前鼠标所处位置: {mouse.}) 当前鼠标位置: (100, 100) # 按下左边的键, 同理, .right对应的是右边的键, mouse.press(.left) # 松开左边的键, mouse.(.left) # 上面提及的连续两行等同于一次点击 # 若这挨着的再重复一回, 那么整体就会达成双击的成效 # 由于两次点击是接连运行的, 不存在等待时长。若于中间加入一个 time.sleep, 那就会演变成两次单击了, 当然针对鼠标点击我们存在更适宜的办法, 运用 click 函数, 该函数接纳两个参数, 也就是点击鼠标的哪一个键以及点击的次数这里持续点击两次, 等同于双击 mouse.click(.right, 2)。然后是滑动滚轮这个需要找张图片来演示。在这种情形之下, 要是我们期望去解析更多的要点, 那就需要朝着下方进行滑动, 此滑动实际上是沿着 y 轴方向来开展的。在这个代码片段中, 从名为“mouse”的这个对象里, “mouse”等于, 在垂直方向上, 沿着y轴向下滑动2个“step”, 这里第一个参数是针对水平方向而言的, 第二个参数则是针对垂直方向来说的, 具体的那个值所代表的意思是移动的“step”数, “mouse.”(0, 2)。那么问题来了什么是 step 呢点击一次就会移动一个 step。同理这个就是在水平方向上移动。从.鼠标 鼠标等于 # 水平方向来看: 大于零是朝右, 小于零是朝左 # 垂直方向而言: 大于零是朝下, 小于零是朝上 鼠标.3 , 0说不定有人会抱有好奇心理, 能不能在水平以及垂直这两个方向上同时进行移动呢? 答案表明是不可以的, 究其原因在于这是对人来实施点击操作的模拟, 只不过存在个效率方面的问题罢了, 所以同样得契合常理, 而我们平常运用鼠标的时候明显是不可能在两个方向上同时实现移动的。监控鼠标除了操作鼠标之外也支持监控记录我们做了哪些操作。源于鼠标, 定义函数, 该函数接受鼠标的 x 坐标和 y 坐标作为参数, 在函数内部执行打印操作, 输出鼠标移动到的具体坐标位置。再定义另一个函数专门处理鼠标按键事件, 此函数也接受鼠标的 x 坐标、y 坐标以及按键标识等参数, 通过判断按键标识来确定鼠标按键类型, 是左键还是右键, 以及按键状态, 是按下还是松开, 最后打印出鼠标按键在给定坐标处的相应状态。还定义了处理鼠标滑轮事件的函数, 接受鼠标的 x 坐标、y 坐标以及滑轮滚动的水平和垂直方向变化量作为参数, 根据水平方向变化量判断滑轮是向右还是向左滑, 根据垂直方向变化量判断滑轮是向上还是向下滑, 按照条件执行对应的输出操作。使用特定名称的上下文环境进行关联操作的一系列语句, 在该语句块内, 以特定分隔符及其他相关参数进行连接操作, 连接的字符串所包含的内容为鼠标移动到不同坐标位置的信息, 还有滑轮在特定坐标处不同方向滑动的信息, 以及鼠标左键在特定坐标处按下和松开的信息。上面进行实例化之际, 等同于开启了一个线程, 鉴于这个类是继承自, 故而我们调用.join, 就相当于在此处阻塞住了, 会始终监控鼠标事件。如果回调函数里面返回了 False那么监听会自动停止。从.鼠标, 定义x, y: 如果.右键: 打印“点击鼠标右键, 监听结束”假如果: “按下”否则: “松开”打印f“鼠标左键在{x}, {y}处{}”与一起作为: .连接“”“鼠标左键在28., 610.处按下 鼠标左键在28., 610.处松开 点击鼠标右键, 监听结束”“”。 但你提供的这段内容存在较多错误和不规范的地方, 原始代码可能是代码, 但表述很混乱且格式错误严重, 难以准确理解其确切意图。当然了, 程序于创建的时刻, 运用的是with语句, 会始终阻塞于此处。要是不期望它阻塞, 也能够这般去做。关于启动子线程开启监听, 主线程会继续向下执行, 若输入为 ( , , ) #, 可调用.start , 并且如果不想监听了, 能够调用.stop 方法结束。操作键盘进行键盘操作相对而言较为简便, 不过也就是按一下某个键, 接着松开某个键, 在保持某一个键或者多个键处于按下未松开状态的情形下再去按下另外一个键而已。下面来操作一下方法和操作鼠标比较类似。通过实例化一个能够对键盘开展操作的对象, 从.Key 处, 按下 a 键, 小写状态下使用.press(a), 松开 a 键, 使用.(a), 按下 A 键, 大写状态下运用.press(A), 也松开 A 键, 使用.(A), 像英文字符、数字等直接输入对应字符就行可是假如是 shift、ctrl 等键, 那就得调用 Key 里的属性, 按下大写键使用.press(Key.), 松开大写键, 运用.(Key.)。然后是按住某个键不放的前提下按下另外的键。从.键, 等于# shift存在两个键, 其一为左边的、其一为右边的, 此情形就如同输入感叹号 借助.(该键.进行操作):.按压(1).击打(1) # 要是需同时按下多个键, 那么输入多个键便可 借助.(该键, 另一键):.按压该键f10。监控键盘监控键盘使用的方法和监控鼠标非常类似依旧是实例化一个类。这段代码貌似存在较多错误和不规范之处, 我先尽力按照要求改写: 从“.”, 定义键, 当按下esc时, 结束监听, 若键等于Key.esc, 打印“你按下了esc, 监听结束”, 打印“你按下了在给定代码逻辑中未明确的键”否则打印“你按下了 {键} 键”, 定义对象, 打印“你松开了 {键} 键”, 通过某种方式此处根据不太清晰的代码猜测可能应有实际代码逻辑, 打印“你按下了 a 键”, 打印“你松开了 a 键”, 又打印“你按下了 Key. 键”, 打印“你松开了 Key. 键”, 再打印“你按下了 Key.shift 键”, 打印“你松开了 Key.shift 键”, 接着打印“你按下了 c 键”, 打印“你松开了 c 键”, 继续打印“你按下了 Key.enter 键”, 打印“你松开了 Key.enter 键”, 最后打印“你按下了esc, 监听结束”。 这里面有较多代码逻辑不清晰和错误表述, 实际代码应修正为正确可运行的形式。这儿列出的便是该模块的基础表述, 究竟如何去运用是由你自身来抉择的。除此以后, 这个模块于Linux环境里同样能够开展运作, 然而其前提条件是必定要有显示器。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门