Python直接控制鼠标键盘

之前因为期末的原因已经很久没写博客了,今天博主发现一个好玩的模块PyAutoGUI,借助它可以使用Python脚本直接控制键盘鼠标,感觉可以解决很多无聊的机械运动。这里记录一下学习情况

安装

$ sudo pip install pyautogui

安装的依赖包可能比较多,只要耐心等待即可

基本使用

screenWidth, screenHeight = pyautogui.size() # 屏幕尺寸
mouseX, mouseY = pyautogui.position() # 返回当前鼠标位置,注意坐标系统中左上方是(0, 0)

为了保持用户可以随时干预鼠标键盘的动作,比较好的方法是添加停顿,或者强制结束,否则想停了鼠标还一直在晃就会失控,下面是两种对应的设置

pyautogui.PAUSE = 1.5 # 每个函数执行后停顿1.5秒
pyautogui.FAILSAFE = True # 鼠标移到左上角会触发FailSafeException,因此快速移动鼠标到左上角也可以停止

鼠标操作

移动

w, h = pyautogui.size()
pyautogui.moveTo(w/2, h/2) # 基本移动
pyautogui.moveTo(100, 200, duration=2) # 移动过程持续2s完成
pyautogui.moveTo(None, 500) # X方向不变,Y方向移动到500 pyautogui.moveRel(-40, 500) # 相对位置移动

拖动

# 点击+向下拖动
pyautogui.click(941, 34, button='left')
pyautogui.dragRel(0, 100, button='left', duration=5)

点击

pyautogui.click(300, 400, button='right') # 包含了move的点击,右键
pyautogui.click(clicks=2, interval=0.25) # 双击,间隔0.25s

滚轮

pyautogui.scroll(-10)

键盘操作

输入文字

点击对话框输入文字即可,不过中文好像不行

pyautogui.click(1279, 374)
pyautogui.typewrite('hello world!')

精确控制键盘

一下是手动输入中文的方法

pyautogui.press('shift') # 切换输入法的中英文
pyautogui.press(['#', ' ']) # press 可以对单个字符或者列表进行操作
pyautogui.press(['x', 'i', 'a', 'o'])
pyautogui.press(['y', 'u'])
pyautogui.press(['w', 'e', 'i'])
pyautogui.press(['l', 'a', 'n'])
pyautogui.press(' ') # 潇雨危栏

hotKey

pyautogui.hotkey('shift', 'a') # 可以使用组合键,本质上是
'''
pyautogui.keyDown('shift')
pyautogui.keyDown('a')
pyautogui.keyUp('shift')
pyautogui.keyUp('a')
'''

小结

PyAutoGUI模拟了鼠标键盘的输入,感觉机器好像被脚本操控了,具体的应用还没想好,感觉好像能解决一些爬虫的问题。这个库的灵活之处在于应用无关性,缺点也在于这一点。

Python直接控制鼠标键盘的更多相关文章

  1. python如何直接控制鼠标键盘

    一.简介 我们知道在windows下输入:win + r,会弹出下面的窗口,而在下面的窗口出现后我们接着按下esc键,下面的窗口会消失 现在设想我们想在python代码里控制键盘,想通过运行代码-&g ...

  2. Python使用pyautogui控制鼠标键盘

    官方文档:https://pyautogui.readthedocs.io/en/latest/# 安装pyautogui模块 在 Windows 上,不需要安装其他模块. 在 OS X 上,运行 s ...

  3. Python——控制鼠标键盘

    一.安装包 pip install pynput 二.引用包 from pynput import mouse,keyboard 三.控制鼠标 from pynput.mouse import But ...

  4. 安利下PyAUtoGUI这个库,可自动化控制鼠标键盘

    PyAutoGUI 不知道你有没有用过,它是一款用Python自动化控制键盘.鼠标的库.但凡是你不想手动重复操作的工作都可以用这个库来解决. 比如,我想半夜时候定时给发个微信,或者每天自动刷页面等操作 ...

  5. 【328】Python 控制鼠标/键盘+图片识别 综合应用

    本文是基于 [267]实现跨网络传数据 的基础上的,由于在弹出 putty 之后,需要手动输入命令(pass.sh.get.sh)来实现数据的传递,另外就是处理完之后需要手动关闭 putty,本文解决 ...

  6. python 监视和控制鼠标键盘的输入(使用pynput 而非pyhook)

    百度上搜到的文章大多基于pyhook, pip不能直接安装,托管在sourceForge上的代码仓库也找不到. google上发现可以使用pynput,貌似控制更为简单,而且可以直接使用pip安装 示 ...

  7. python控制鼠标键盘

    1.安装类库 pip install pyautogui 2.代码: import pyautogui,time,random pyautogui.PAUSE = pyautogui.FAILSAFE ...

  8. 用代码控制鼠标键盘(C#语言)

    前些时间想做一个鼠标点击器,用到了这些知识. 下面整理记录一下. ps.感谢各位大神 下面直接上代码 1.鼠标的控制 class MouseMove { #region MouseEvent [Sys ...

  9. python之auto鼠标/键盘事件

    mouse_key.py import os import time import win32gui import win32api import win32con from ctypes impor ...

随机推荐

  1. Nginx限制下载速度

    http {   limit_conn_zone $binary_remote_addr zone=one:10m; #容器共使用10M的内存来对于IP传输开销 server {        lis ...

  2. 【Oracle】Linux7安装11g 86%报错:Error in invoking target 'agent nmhs' of makefile

    http://blog.itpub.net/29475508/viewspace-2120836/

  3. asp.net core 创建允许跨域请求的api, cors.

    配置应用方域名. 在webapi中引用cors包,在startup的Configure\ConfigServices中增加启动项配置,在api中增加EnableCors的Attribute属性.即可. ...

  4. Codeforces 1137D Cooperative Game (看题解)

    Cooperative Game 智商题, 感觉不太能推出来, 虽然看看证明过程是对的. #include<bits/stdc++.h> #define LL long long #def ...

  5. BZOJ5291/洛谷P4458/LOJ#2512 [Bjoi2018]链上二次求和 线段树

    原文链接http://www.cnblogs.com/zhouzhendong/p/9031130.html 题目传送门 - LOJ#2512 题目传送门 - 洛谷P4458 题目传送门 - BZOJ ...

  6. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第十一集之安装FastDFS】

    1,安装FastDFS之前,先安装libevent工具包. yum -y install libevent 2,安装libfastcommonV1.0.7工具包.有可能找到新版本的zip压缩包:lib ...

  7. day42 事物,数据库锁

    事物是把一些sql语句作为一个原子性操作,就是说我会写好几条sql语句,然后我想把这好几条的sql语句作为一个整体,然后让这个整体一起去运行,不可以拆分开,就像我们用面粉做一个馒头一样,我需要把这些面 ...

  8. int和intege相比

    int i = 100; Integer i1 = 100; Integer i2 = new Integer(100); system.out.println(i == i1);true syste ...

  9. hive提前过滤重要性

    hive提前过滤 create table sospdm.tmp_yinfei_test_01 ( id string ) partitioned by (statis_date string) ; ...

  10. Web界面实现数据库增删改查过程

    实现方法:JSP+Servlet+JavaBean 基本实现思想:jsp文件为显示界面,包括增删改查四个界面,然后使用form或者href超链接的方法将网页获得的值传到Servlet中的方法里:而se ...