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下动作:
#右键退出。