18.5 控制鼠标交互

18.5    控制鼠标交互
既然你知道了如何移动鼠标,弄清楚了它在屏幕上的位置,就可以开始点击、拖动和滚动鼠标。

18.5.1   点击鼠标
要向计算机发送虚拟的鼠标点击,就调用 pyautogui.click() 方法。默认情况下,点击将使用鼠标左键,点击发生在鼠标当前所在位置。如果希望点击在鼠标当前位置以外的地方发生,可以传入 x、y 
坐标作为可选的第一第二参数。
如果想指定鼠标按键,就加入 button  关键字参数,值分别为 ‘left’、’middle’或 
‘right’。例如,pyautogui.click(100,150,button=’left’)将在坐标(100,150)处点击鼠标左键。而 
pyautogui.click(200,250,button=’right’)将在坐标(200,250)处点击右键。
在交互式环境中输入以下内容:

>>>  import  pyautogui
>>>  pyautogui.click(10,  5)

你应该看到鼠标移到屏幕左上角的位置,并点击一次。完整的“点击”是指按下鼠标按键,然后放开,同时不移动位置。实现点击也可以调用 pyautogui. mouseDown(),这只是按下鼠标按键,再调用 
pyautogui.mouseUp(),这只是释放鼠标按键。这些函数的参数与 click() 相同。实际上,click() 函数只是这两个函数调用的方便封装。
为了进一步方便, pyautogui.doubleClick()  函数只执行双击鼠标左键。
pyautogui.rightClick() 和pyautogui.middleClick() 函数将分别执行双击右键和双击中键。

18.5.2   拖动鼠标
“拖动”意味着移动鼠标,同时按住一个按键不放。例如,可以通过拖动文件图标,在文件夹之间移动文件,或在日历应用中移动预约。
PyAutoGUI 提供了 pyautogui.dragTo() 和pyautogui.dragRel() 函数,将鼠标拖动到一个新的位置, 或相对当前位置的位置。 dragTo()  和 
dragRel()  的参数与 moveTo() 和 moveRel() 相同:x 坐标/水平移动,y 坐标/垂直移动,以及可选的时间间

import  pyautogui,  time
?  time.sleep(5)
?  pyautogui.click()  #  click  to  put  drawing  program  in  focus distance  =  200
while  distance  >  0:
?            pyautogui.dragRel(distance,  0,  duration=0.2)   #  move  right
?            distance  =  distance  –  5
?            pyautogui.dragRel(0,  distance,  duration=0.2)   #  move  down
?            pyautogui.dragRel(-distance,  0,  duration=0.2)  #  move  left distance  = 
 distance  –  5
pyautogui.dragRel(0,  -distance,  duration=0.2)  #  move  up

在运行这个程序时,会有 5 秒钟的延迟?,让你选中铅笔或画笔工具,并让鼠标停留在画图工具的窗口上。然后 spiralDraw.py 
将控制鼠标,点击画图程序获得焦点?。如果窗口有闪烁的光标,它就获得了“焦点”,这时你的动作(例如打字,或这个例子中的拖动鼠标),就会影响该窗口。画图程序获取焦点后,spiral
Draw.py将绘制一个正方形旋转图案,如图 18-2 所示。

 

distance  变量从 200  开始, 所以在 while  循环的第一次迭代中, 第一次 dragRel() 调用将光标向右拖动 200 像素,花了 0.2 
秒?。然后 distance 降到 195?,第二次 dragRel() 调用将光标向下拖动 195 像素?。第三次 
dragRel() 调用将光标水平拖动?195(向左 195)?,distance 降到 190,最后一次 dragRel 调用将光标向上拖动 
190。每次迭代,鼠标都向右、向下、向左、向上拖动,distance 都比前一次迭代小一点。通过这段代码循环,就可以移动鼠标光标,画出正方形旋转图案。
可以手工画出这个漩涡(或者说用鼠标),但一定要画得很慢,才能这么精确。
pyautogui 能够几秒钟就画完。

注意       你可以在代码中使用 pillow 模块的画图函数,画出这个图形,更多信息请参见第 17 章。但利用 GUI 自动化就能使用画图程序提供的高级画图工具,如灰度、不同的画笔或填充工具。

18.5.3   滚动鼠标
最后一个 pyautogui 鼠标函数是 
scroll()。你向它提供一个整型参数,说明向上或向下滚动多少单位。单位的意义在每个操作系统和应用上不一样,所以你必须试验,看看在你的情况下滚动多远。滚动发生在鼠标的当前位置。传递正整数表示向上滚动
,传递负整数表示向下滚动。将鼠标停留在 IDLE 窗口上,在 IDLE 的交互式环境中运行以下代码:
>>>  pyautogui.scroll(200)

你会看到 IDLE 轻松地向上滚动,然后又向下滚回来。发生向下滚动是因为,在执行完指令后,IDLE 自动向下滚动到底部。输入以下代码作为替代:
>>>  import  pyperclip
>>>  numbers  =  ”
>>>  for  i  in  range(200):
numbers  =  numbers  +  str(i)  +  ‘n’

>>>  pyperclip.copy(numbers)

在第二行,输入的两条命令以分 分隔,这告诉 Python 在运行这些命令时,就像它们在独立的行中一样。唯一的区别在于,交互式环境不会在两个命令之间提示
 

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214586 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月4日
下一篇 2022年1月4日

相关推荐