565|3

552

帖子

3

TA的资源

纯净的硅(初级)

楼主
 

书籍《Python编程快速上手(第2版)》阅读心得12、用GUI自动化控制键盘和鼠标(2) [复制链接]

本帖最后由 xinmeng_wit 于 2024-6-7 20:35 编辑

除了上一篇讲到的获取屏幕尺寸,移动鼠标指针以外,pyautogui模块还有很多其它的功能,这一篇继续探索好玩有趣的内容。

既然能移动鼠标指针,那么肯定也能点击鼠标,拖动鼠标和滚动鼠标滚轮。

单击鼠标可以通过调用pyautogui.click()方法来实现,该方法可以指定单击的位置坐标和按键(left,middle,right)。

还可以调用pyautogui.doubleClick()实现双击,pyautogui.rightClick()实现右击,pyautogui.middleClick()实现滚轮单击。

另外,pyautogui模块还可以通过调用pyautogui.dragTo()和pyautogui.drag()方法实现鼠标的拖动,拖动意味着按着鼠标左键不放移动鼠标位置。

pyautogui.scroll()方法用来滚动鼠标,滚动多少单位可以通过参数来指定。

接下来,通过一个程序例子来说明这些方法。

import pyautogui, time

# 单击鼠标,位置(10 , 5)
pyautogui.click(10, 5)
# 延时5s
time.sleep(5)
# 单击,激活窗口
pyautogui.click()

# 在画板上画图
distance = 300
change = 20
while distance > 0:
    pyautogui.drag(distance, 0, duration=0.2) # 鼠标向右拖动
    distance = distance - change
    pyautogui.drag(0, distance, duration=0.2) # 鼠标向下拖动
    pyautogui.drag(-distance, 0, duration=0.2) # 鼠标向左拖动
    distance = distance - change
    pyautogui.drag(0, -distance, duration=0.2) # 鼠标向上拖动

# 滚动鼠标
pyautogui.scroll(200)

上面程序在画板上画出的图形如下,左右两幅图选择的画笔不一样,还是蛮有趣的。

 

除了以上内容,pyautogui还能获取屏幕上指定位置的RGB值,同时能判断该RGB值是否与给定值相等,这个方法可以用来识别按钮的颜色,如果按钮的颜色与预期的颜色相匹配就可以执行点击操作,如果不匹配,说明窗口位置移动了,不能点击。

import pyautogui

# 获取(0,0)位置的颜色
print(pyautogui.pixel(0,0))
# 匹配(0,0)位置的颜色,如果匹配则返回True,如果不匹配返回False
print(pyautogui.pixelMatchesColor(0,0,(125, 182, 191)))

运行结果:

 

 

为了方便python程序很好的识别要点击的窗口,pyautogui模块提供了一些接口用于获取窗口信息,和操作窗口。

详细的接口说明已经写在了代码注释里,就不过多解释了。

import pyautogui,time

# 获取当前活动窗口
fw = pyautogui.getActiveWindow()

# 打印窗口信息
print(str(fw))
# 获取title
print(fw.title)
# 获取窗口大小
print(fw.size)

# 调整窗口宽度为800
fw.width = 800

# 窗口是否最大化,返回True/False
print(fw.isMaximized)

# 窗口是否最小化,返回True/False
print(fw.isMinimized)

# 窗口是否激活,返回True/False
print(fw.isActive)

# 最大化窗口
fw.maximize()

# 撤销最大化操作
fw.restore()

# 等待5s
time.sleep(5)

# 关闭窗口
fw.close()

运行结果:

 

等待5s后,窗口自动关闭了。

 

除了对鼠标和窗口的操作,最后一个部分,还可以对键盘进行操作,模拟键盘的按下,这个功能能实现程序控制打字。

模拟按键接口很简单,只需调用pyautogui.write()方法就能实现任意按键的输入。

我们可以用python程序在记事本中自动打出字符串“Hello world!”,运行程序后,记得将光标放在记事本界面

import pyautogui,time
# 等待5s,用于准备
time.sleep(5)

# 模拟键盘输入
pyautogui.write('Hello world!', 0.25)

运行以上程序后,就会在记事本中打印出对应的字符串。

 

除了这种简单的字母以外,pyautogui模块还能模拟回车键(‘enter’),esc键(‘esc’),shift键等等。

各种按键对应的pyautogui里面的字符/字符串列表如下:

 

 

 

除了pyautogui.write()方法能模拟按键信号以外,还有几个方法也可以模拟按键的按下和松开的行为,如pyautogui.keyDown(),pyautogui.keyUp(), pyautogui.press()

pyautogui.keyDown()表示按键按下,不松开,pyautogui.keyUp()表示按键松开,pyautogui.press()表示按下后,再松开。

这三个方法对模拟键盘的组合键非常有用。

看个例子:

import pyautogui,time

pyautogui.keyDown('shift')
pyautogui.press('4')
pyautogui.keyUp('shift')

运行上面的代码,就能输出美元符号,模拟了shift + 4 的组合键。

用这种方式来实现组合键还是很麻烦,因为要写多行代码,pyautogui模块的作者应该是考虑到了这个问题,所有又提供了一个专门模拟组合键的方法,就是pyautogui.hotkey()方法。

这个方法,只需要按顺序传入对应的键值就可以完成组合键的按下释放了,非常方便。

例如下面的一行代码就能模拟按下键盘ctrl + c组合键。

pyautogui.hotkey('ctrl', 'c')

是不是特别方便。

 

好了,到这里本章的GUI自动化控制鼠标和键盘就结束了,本章的内容其实是非常有趣的,给用python做GUI自动化的朋友很多的启发和帮助,也希望各位朋友以后能有机会用在自己的项目中,提高工作效率,解放双手,早日脱离加班的苦海,按时下班,享受生活!!!

最新回复

楼主分享的pythonGUI自动化控制鼠标和键盘的技术内容,值得学习,感觉这方面的技术有很大的应用空间   详情 回复 发表于 2024-6-10 08:46
点赞 关注
 
 

回复
举报

6992

帖子

11

TA的资源

版主

沙发
 

好了,到这里本章的GUI自动化控制鼠标和键盘就结束了,本章的内容其实是非常有趣的,给用python做GUI自动化的朋友很多的启发和帮助,也希望各位朋友以后能有机会用在自己的项目中,提高工作效率,解放双手,早日脱离加班的苦海,按时下班,享受生活!!!

确实,学习掌握知识后,就是要用到现实中。要不就失去了他的意义!

 
 
 

回复

755

帖子

5

TA的资源

纯净的硅(高级)

板凳
 

楼主分享的pythonGUI自动化控制鼠标和键盘的技术内容,值得学习,感觉这方面的技术有很大的应用空间

点评

可以解放双手,实现自动化点击,和自动化按键输入,还是挺方便的  详情 回复 发表于 2024-6-11 10:23
 
 
 

回复

552

帖子

3

TA的资源

纯净的硅(初级)

4
 
chejm 发表于 2024-6-10 08:46 楼主分享的pythonGUI自动化控制鼠标和键盘的技术内容,值得学习,感觉这方面的技术有很大的应用空间

可以解放双手,实现自动化点击,和自动化按键输入,还是挺方便的


 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表