pynput加pyautogui监听鼠标并生成代码

pyautogui操控鼠标,代码比pynput简单,但是pyautogui依赖也多:

pymsgbox, pytweening, pyscreeze, pygetwindwo, mouseinfo, pyrect....

pyautogui不能像pynput一样监听鼠标,所以需要pynput配合,写一个监听鼠标并直接生成pyautogui代码的工具。

import pynput
import time
import datetime as dt
import sys
import os

import platform



tm = dt.datetime.now().strftime("%Y-%m-%d-%H-%M")

   
path = os.getcwd().replace("\\", "/") +"/"

print(path)


with open(path + tm +  "监听鼠标3.py", 'a+') as f:

    f.write("import time")
    f.write("\n\n")
    f.write("import pyautogui as pg")
    f.write("\n\n")
    f.write("#输入内容是pg.type(‘xxx’) 移动鼠标是 pg.moveTo(200, 300)  点击是 pg.click()里边可以加坐标  回车是 pg.press('enter')")
    f.write("\n\n")

    
with pynput.mouse.Events() as event:

    m = 0
    startTime = time.time()
    T = []
    T.append(time.time())

    for i in event:
        #迭代用法。                  
        if isinstance(i, pynput.mouse.Events.Move):
            #鼠标移动事件。
            #print(i.x, i.y)
            pass
            #不要直接打印`i`,模块这里有问题,会报错。

        elif isinstance(i, pynput.mouse.Events.Click):
            #鼠标点击事件。
            #print(i.x, i.y, i.button, i.pressed)
            m = m + 1
            with open(path + tm +  "监听鼠标3.py", "a+") as f:
                f.write("\n")
                f.write(f"#第{int(m/2) +1}下动作:")                
                if i.button == pynput.mouse.Button.left:
                    f.write("\n")
                    
                    f.write(f'{f"pg.click{(i.x, i.y)}" if i.pressed else "##"}')
                    
                    f.write("\n")
                    f.write("time.sleep(1)")
                    f.write("\n")
                    endTime = time.time()
                    t = endTime -startTime                    
                    f.write(f"#time.sleep({t/m}) #平均用时")
                    f.write("\n")
                    T.append(time.time())
                    t2 = T[m] - T[m-1]
                    f.write(f"#time.sleep({t2})  #本次用时")
                    f.write("\n")
                    
                elif i.button == pynput.mouse.Button.right:
                 
                    f.write("\n")
                    f.write("#右键退出。")
                    f.write("\n")
                    sys.exit()
            

        elif isinstance(i, pynput.mouse.Events.Scroll):
            #鼠标滚轮。
            #print(i.x, i.y, i.dx, i.dy)
            m = m + 1
            with open(path + tm +  "监听鼠标3.py", "a+") as f:
                f.write("\n")
                f.write(f"#第{m}下动作:")
                f.write("\n")
                f.write(f"pg.moveTo{(i.x, i.y)}")
                f.write("\n")
                #f.write(f"pg.scroll{(i.dx, i.dy)}")
                f.write(f"pg.scroll({i.dy})")
                f.write("\n")
                endTime = time.time()
                t = endTime -startTime
                f.write(f"time.sleep({t/m})  #平均用时")
                f.write("\n")
                T.append(time.time())
                t2 = T[m] - T[m-1]
                f.write(f"#time.sleep({t2}) #本次动作用时")
                f.write("\n")
  
    i = event.get(5)

自动生成的代码,看起来比pynput代码更直观。后面加入其他代码也容易.

import time

import pyautogui as pg

#输入内容是pg.type(‘xxx’)


#第1下动作:
pg.click(196, 880)
time.sleep(1)
#time.sleep(2.6561367511749268)
#time.sleep(2.6561667919158936)

#第2下动作:
#null
time.sleep(1)
#time.sleep(1.3919655084609985)
#time.sleep(0.1277921199798584)

#第2下动作:
pg.click(418, 599)
time.sleep(1)
#time.sleep(1.6003363132476807)
#time.sleep(2.017106294631958)

#第3下动作:
#null
time.sleep(1)
#time.sleep(1.2280945181846619)
#time.sleep(0.1113431453704834)

#第5下动作:
pg.moveTo(661, 597)
pg.scroll(-1)
time.sleep(1.4465670585632324)
#time.sleep(2.3204376697540283)

#第6下动作:
pg.moveTo(659, 609)
pg.scroll(-1)
time.sleep(1.2400860786437988)
#time.sleep(0.20768189430236816)

#第7下动作:
pg.moveTo(659, 612)
pg.scroll(-1)
time.sleep(1.2161766120365687)
#time.sleep(1.0727181434631348)

#第8下动作:
pg.moveTo(659, 612)
pg.scroll(-1)
time.sleep(1.0702289640903473)
#time.sleep(0.04859566688537598)

#第9下动作:
pg.moveTo(657, 618)
pg.scroll(-1)
time.sleep(0.9583931499057345)
#time.sleep(0.06371569633483887)

#第10下动作:
pg.moveTo(655, 623)
pg.scroll(-1)
time.sleep(0.872347092628479)
#time.sleep(0.09792852401733398)

#第11下动作:
pg.moveTo(653, 626)
pg.scroll(-1)
time.sleep(0.7987001809206876)
#time.sleep(0.06222677230834961)

#第12下动作:
pg.moveTo(646, 635)
pg.scroll(-1)
time.sleep(0.7408395210901896)
#time.sleep(0.10437202453613281)

#第13下动作:
pg.moveTo(646, 635)
pg.scroll(1)
time.sleep(0.73924497457651)
#time.sleep(0.7201240062713623)

#第14下动作:
pg.moveTo(646, 635)
pg.scroll(1)
time.sleep(0.6898832321166992)
#time.sleep(0.04817986488342285)

#第15下动作:
pg.moveTo(646, 635)
pg.scroll(1)
time.sleep(0.6471218585968017)
#time.sleep(0.04845023155212402)

#第16下动作:
pg.moveTo(646, 635)
pg.scroll(1)
time.sleep(0.6111462563276291)
#time.sleep(0.07151293754577637)

#第9下动作:
pg.click(651, 626)
time.sleep(1)
#time.sleep(0.6645666851716883)
#time.sleep(1.519303321838379)

#第10下动作:
#null
time.sleep(1)
#time.sleep(0.6343552668889364)
#time.sleep(0.12075591087341309)

#第19下动作:
pg.moveTo(649, 630)
pg.scroll(1)
time.sleep(0.6969978558389764)
#time.sleep(1.8245751857757568)

#第20下动作:
pg.moveTo(649, 630)
pg.scroll(1)
time.sleep(0.6640713334083557)
#time.sleep(0.038451433181762695)

#第21下动作:
pg.moveTo(649, 630)
pg.scroll(1)
time.sleep(0.6340565908522833)
#time.sleep(0.03377079963684082)

#第22下动作:
pg.moveTo(649, 630)
pg.scroll(1)
time.sleep(0.6069994406266646)
#time.sleep(0.03879737854003906)

#第23下动作:
pg.moveTo(648, 630)
pg.scroll(1)
time.sleep(0.5827050105385159)
#time.sleep(0.04822731018066406)

#第24下动作:
pg.moveTo(648, 630)
pg.scroll(-1)
time.sleep(0.5787585179011027)
#time.sleep(0.48819732666015625)

#第25下动作:
pg.moveTo(648, 630)
pg.scroll(-1)
time.sleep(0.55727294921875)
#time.sleep(0.04140901565551758)

#第26下动作:
pg.moveTo(648, 630)
pg.scroll(-1)
time.sleep(0.5372928656064547)
#time.sleep(0.03778409957885742)

#第27下动作:
pg.moveTo(648, 630)
pg.scroll(-1)
time.sleep(0.5188885353229664)
#time.sleep(0.04037833213806152)

#第28下动作:
pg.moveTo(647, 632)
pg.scroll(-1)
time.sleep(0.5023873107773917)
#time.sleep(0.05686378479003906)

#第29下动作:
pg.moveTo(647, 634)
pg.scroll(-1)
time.sleep(0.486970408209439)
#time.sleep(0.05529212951660156)

#第30下动作:
pg.moveTo(643, 638)
pg.scroll(-1)
time.sleep(0.4742079734802246)
#time.sleep(0.10409903526306152)

#第16下动作:
#右键退出。

你可能感兴趣的:(python,开发语言,pyautogui)