2024-01-26 03:03:47 | 我爱编程网
Python也能象按键精灵一样模拟键鼠操作,直接用Python来做吧,该模块叫pyautogui,了解一下。
import pyautogui
print('Press Ctrl-C to quit.')
try:
while True:
# Get and print the mouse coordinates.
x, y = pyautogui.position()
positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
print(positionStr, end='')
print('\b' * len(positionStr), end='', flush=True)
except KeyboardInterrupt:
print('\nDone.')
这是Automate_the_Boring_Stuff一书中的演示代码,用于查找当前鼠标的坐标。
1.1 安装pyautogui 模块1.2 解决程序出现的错误,及时制止1.2.1 通过任务管理器来关闭程序
1.2.2 暂停和自动防故障设置1.3 控制鼠标移动1.3.1 移动鼠标1.3.2 获取鼠标位置
1.4 控制鼠标交互1.4.1 点击鼠标1.4.2 拖动鼠标1.4.3 滚动鼠标
1.5 处理屏幕1.5.1 捕获屏幕快照1.5.2 分析屏幕快照
1.1 安装pyautogui 模块
在cmd命令行界面输入 pip install pyautogui 国内会有延迟,可能出现超时读取数据失败,多安装几遍就好了,建议安装时候保持界面在安装界面,保持你的宽带最大程度的给与这个安装进程 安装完毕后在python界面引入模块
1.2 解决程序出现的错误,及时制止
在开始 GUI 自动化之前,你需要知道如何解决可能发生的问题。Python 能以很快的速度移动鼠标并击键。实际上,它可能太快,从而导致其他程序跟不上。而且, 如果出了问题,但你的程序继续到处移动鼠标,可能很难搞清楚程序到底在做什么,或者如何从问题中恢复。你可能没有办法及时关闭IDLE运行窗口或者是DOS界面的python运行窗口,幸而python有几种办法来防止或者恢复这种错误。
1.2.1 通过任务管理器来关闭程序
windows中可以使用 Ctrl+Alt+Delete键来启动,并且在进程中进行关闭,或者直接注销计算机来阻止程序的乱作为
1.2.2 暂停和自动防故障设置
(1)可以告诉脚本在每次调用函数以后有暂停的时间来允许我们关闭窗口,可以通过设置pyautogui.PAUSE来规定暂停的秒数。这个只针对pyautogui指令有效。其它指令不会受影响 (2)pyautogui也有自动防故障功能。将鼠标移到屏幕的左上角,这将导致 pyautogui 产生 pyautogui .FailSafeException 异常。你可以使用try和except语句来处理这种异常,也可以让程序自动发生崩溃而停止。 将pyautogui.FAILSAFE置为True将启动自动防故障
1.3 控制鼠标移动
pyautogui的鼠标函数使用x,y坐标。原点的横纵纵坐标都为0,原点在屏幕的左上角,x的坐标为从左向右递增,y的坐标为从上向下递增,所有的坐标都是正整数,没有负数坐标,如果你的屏幕分辨率为1920×1080,那么右下角的坐标为(1919,1079) pyautogui.size() 函数返回两个整数的元组,包含屏幕的宽和高的像素数。
1.3.1 移动鼠标
pyautogui.moveTo() 函数将鼠标立即移动到屏幕的指定位置。表示 x、y 坐标的整数值分别构成了函数的第一个 和第二个参数。可选的 duration 整数或浮点数表示的关键字参数,指定了将鼠标移到目的位置所需的秒数。如果不指定,默认值是零,意为立即移动。 如上所示,上面的代码运行时,鼠标从运行前的工作位置移动到第一个点,然后移向下一个点,如此循环十次 当然,鼠标也可以以当前工作位置为起点,来移动鼠标。利用moveRle函数,第一个参数设置为负数意为向左移动,第二个参数设置为负数意为向上移动,第一个参数为0意为横坐标不变,第二个参数为0意为着纵坐标不变。
1.3.2 获取鼠标位置
position()函数可以返回当前鼠标的位置,即由x,y组成的元组
1.4 控制鼠标交互
随着我们知道了鼠标在屏幕上的位置,我们就可以学着来点击,拖动和滚动鼠标。
1.4.1 点击鼠标
(1)如果向计算机发送虚拟的鼠标点击,就要调用pyautogui.click()函数,默认为在当前的位置点击鼠标左键,如果需要在其他地方点击,需要传入分别代表x和y的第一个和第二个参数 (2)如果想指定鼠标按键,可以传入button参数,参数值可以设定为left,middle或者right 分别代表左键,中键,右键 (3)pyautogui.mouseDown()意为按下鼠标按键,pyautogui.mouseUp()意为松开鼠标按键 (4)pyautogui.doubleClick() 函 数 只 执 行 双 击 鼠 标 左 键 。 pyautogui.rightClick() 和pyautogui.middleClick() 函数将分别执行双击右键和双击中键。
1.4.2 拖动鼠标
拖动即移动鼠标,按着一个按键不放来移动屏幕上的位置,例如:可以在文件夹中拖动文件来移动位置,或者将文件等拉入发送框内相当于复制粘贴的操作 pyautogui提供了一个pyautogui.dragTo()和pyautogui.dragRel()函数,相当于从指定位置拖动和从当前位置的区别。传入两个相当于x和y的参数。 下面我们将打开windows自带的paint程序,来演示鼠标拖动
#! python3
#DisplayDrag.py-To paint the picture in the software of paint.
import pyautogui,time
time.sleep(5)
pyautogui.click() #Start a point to draw a picture
temp=200
while temp>0:
pyautogui.dragRel(temp,0,duration=0.2) #move right
temp=temp-10
pyautogui.dragRel(0,-temp,duration=0.2) #move up
pyautogui.dragRel(-temp,0,duration=0.2) #move left
temp=temp-10
pyautogui.dragRel(0,temp,duration=0.2) #move down
上面的代码所示为设置一个temp循环变量,并让程序先休眠五秒,方便你找到画图开始的位置并定位。
1.4.3 滚动鼠标
最后一个 pyautogui 鼠标函数是 scroll()。你可以向它提供一个整型参数,说明向上或向下滚动多少单位。单位的意义在每个操作系统和应用上不一样,所以你必须试验,看看在你的情况下滚动多远。滚动发生在鼠标的当前位置。传递正整数表示向 上滚动,传递负整数表示向下滚动。
可以将上图的结果粘到粘贴板,然后利用休眠函数,定位到粘贴板,然后向上翻滚100个单位,我的计算机翻滚10000个单位,看到的效果比较明显
1.5 处理屏幕
你的 GUI 自动化程序没有必要盲目地点击和输入。pyautogui 拥有屏幕快照的 功能,可以根据当前屏幕的内容创建图形文件。这些函数也可以返回一个 Pillow 的 Image 对象,包含当前屏幕的内容。
1.5.1 捕获屏幕快照
利用pyautogui.screenshot()来捕捉屏幕快照,将该捕捉快照赋予一个变量,通过向捕捉对象的getpixel()函数传入x,y的参数来返回一个元组,包含三个整数,意为着RGB的颜色值我爱编程网
1.5.2 分析屏幕快照
假设你的 GUI 自动化程序中,有一步是点击蓝色选项。在调用 click() 方法之前, 你可以获取屏幕快照,查看脚本要点击处的像素。可以利用语句来判断跟原来的颜色是否相同,如果它的颜色和灰色按钮不一样, 那么程序就知道出问题了。意外也许是窗口发生了意外的移动,也许是弹出式对话框挡住了该按钮。这时不应该继续(可能会点击到错误的东西,造成严重破坏),程序可以 “看到”它没有点击在正确的东西上,并自行停止
我爱编程网(https://www.52biancheng.com)小编还为大家带来请用Python如何模拟键盘操作的相关内容。
用pywin模块调用win32函数就可以了
import win32api
import win32con
win32api.keybd_event(17,0,0,0) #ctrl键位码是17
win32api.keybd_event(86,0,0,0) #v键位码是86
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
附个键位码表:
字母和数字键 数字小键盘的键 功能键 其它键
键 键码 键 键码 键 键码 键 键码
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
有什么软件可以写python编写python源代码的软件.首推的Pycharm。PyCharm用于bai一般IDE具备的功能,比如,调试、语法高亮、Project管理、du代码跳转、智能提示、自动完zhi成、单元测试、版本控制另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持GoogleAppEngine,更酷的是,PyCharm支持IronPython
学python,可以用哪些开发软件。用什么开发软件最好?学python,开发软件有Jupyter,nopad++,sublimetext,PyCharm。PyCharm开发软件最好。PyCharm用于一般IDE具备的功能,比如,调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持G
键盘TYO键不好用了,怎么解决?①打开命令提示符视窗步骤1.在搜索框中输入cmd或powershell步骤2.在打开的命令提示符视窗或WindwosPowerShell视窗中,敲击失灵的键盘按键(请切换到英文输入法)。若可正常输入字符,则键盘硬件正常,可能是某些软件导致的异常。②卸载键盘辅助类软件并重启电脑如键盘硬件故障,可以至华硕官方服务中心检测维修。电脑键盘部分键
有没有手机上可以运行java程序的软件?能不能再手机系统运行,取决于这段java代码是什么格式。还有手机是什么系统。比如。如果手机是苹果的。那么就不可以,它的应用是用oc或者swift来写的。如果是微软手机系统的也不行,用C#语言开发。如果是安卓手机,他的应用是java开发的。但是也要遵守一定规范并且制作成apk才可以运行。如果非得要运行一段java代码,也是可以的。就是自己制作一个apk
java读取excel表格数据前言:小编读写Excel使用的是EasyExcel,EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。详细了解和使用请参考官方文档:EasyExcel一、Excel示例二、代码实现1、引入依赖dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifact
大学生入门Python看这四个阶段就够了不愧是北大计算机大佬将Python浓缩成四阶段让小白学生大彻大悟第一周:熟悉Python要积极探索Python的使用方法,尽可能多的完成下面这些任务:第一天:基本概念(4小时):print,变量,输入,条件语句第二天:基本概念(5小时):列表,for循环,while循环,函数,导入模块第三天:简单编程问题(5小时):交
python写软件步骤?1、安装编译器,将工具双击打开,按照默认方式安装即可,安装完成后在开始程序中找到IDLE快捷方式,打开,可以新建一个窗口,保存为py的文件格式。2、如果要执行该文件,应该点击菜单Run下的RunModuleF5按钮即可。3、如果要调试,应该仔细的查看命令行回馈回来的信息,注意出错的位置,通过Alt加G命令迅速转到出错位置,仔细检出并改正。pytho
PHP网络编程标准教程的目录第1章PHP概述0011.1什么是PHP0021.2PHP开发语言的特点0021.3PHP的发展趋势0031.4如何学好PHP0041.5PHP的语法结构0051.5.1PHP标识符的规则0051.5.2PHP标记符的作用0051.6程序注释0061.6.1使用PHP注释0061.6.2使用HTML注释0071.6.3
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00