dogtail的使用方法(四)——实现鼠标和键盘的操作

dogtail自带鼠标和键盘的操作方法,使用方法如下:

环境配置

安装dogtail:

sudo pip3 install dogtail

导入包

dogtail中,控制鼠标键盘的包是在rawinput里面:

from dogtail import rawinput

点击

rawinput.click(x, y, button=1, check=True)

1.x, y 为所要点击的坐标

2.button为鼠标左右键,1代表左键,2代表滚轮,3代表右键,默认参数,可以不传

3.check为坐标检查,如果为负数,会抛异常,默认参数,可以不传

双击

rawinput.doubleClick(x, y, button=1, check=True)

点击(按住不释放)

rawinput.press(x, y, button=1, check=True)

鼠标释放

rawinput.release(x, y, button=1, check=True)

鼠标移动(绝对位置)

rawinput.absoluteMotion(x, y, mouseDelay=None, check=True)

1.x, y 为所要移动到的坐标

2.mouseDelay为鼠标移动的延迟时间,默认参数,可以不传

3.check为坐标检查,如果为负数,会抛异常,默认参数,可以不传

鼠标移动(相对位置)

rawinput.relativeMotion(x, y, mouseDelay=None)

1.x, y 为所要移动的相对位置,比如从当前位置移动100,100,注意和绝对位置的区别

2.mouseDelay为鼠标移动的延迟时间,默认参数,可以不传

拖拽

rawinput.drag(fromXY, toXY, button=1, check=True)

1.fromXY 起始位置的坐标(x, y )

2.toXY 目标位置的坐标(x, y )

这个拖拽实际为绝对位置的拖拽,rawinput没有提供相对位置的拖拽,但是我们可以通过:

rawinput.press(x, y ) 
rawinput.relativeMotion(x, y)
rawinput.release(x, y)

进行二次封装实现相对位置的拖拽。

输入文本

rawinput.typeText(string)

传入要输入的字符串即可

注意: 不支持中文输入,经过分析源码,输入的功能实际是遍历字符串里面的每一个字符然后调用的pressKey,也就是敲键盘的方式实现输入,所以中文输入的bug无解。在UOS上使用这个方法输入中文的时候,系统直接崩溃(注销)。

点击键盘

rawinput.pressKey(keyName)
keyName = {
    'enter': 'Return',
    'esc': 'Escape',
    'alt': 'Alt_L',
    'control': 'Control_L',
    'ctrl': 'Control_L',
    'shift': 'Shift_L',
    'del': 'Delete',
    'ins': 'Insert',
    'pageup': 'Page_Up',
    'pagedown': 'Page_Down',
    ' ': 'space',
    '	': 'Tab',
    '
': 'Return'
}

组合按键

rawinput.keyCombo(comboString)
comboString组合按键,比如:
'<Control><Alt>p' 
'<Control><Shift>PageUp' 
'<Control>q'
没伞的孩子,就要学会在雨中奔跑!
原文地址:https://www.cnblogs.com/mikigo/p/14154939.html