zoukankan      html  css  js  c++  java
  • 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'
    
    没伞的孩子,就要学会在雨中奔跑!
  • 相关阅读:
    屏蔽2003:在系统启动时至少有一个服务或驱动程序产生错误
    C#中有关string和byte[]转换的问题
    如何控制winform程序只能打开一个呢?
    ArrayList的使用方法【转载】
    ASP.NET中ajaX学习记录
    C#去除字符串空格的几种方法【转载】
    C# 中2,10,16进制及其ASCII码之间转化
    vc++下char数组赋值乱码问题
    c#关机时自动退出程序
    Android入门前言(一)之Android应用开发入门五问 (转自:http://blog.csdn.net/android_tutor/)
  • 原文地址:https://www.cnblogs.com/mikigo/p/14154939.html
Copyright © 2011-2022 走看看