代码如下:
思路是先执行监听键盘的循环,只有当一秒钟键盘无动作时(j.key == None; j=events.get(1))才执行监听鼠标的循环。执行结果是什么也监听不到,或者只能监听鼠标。
求大神们给个思路!!
import pynput
import time
import datetime as dt
import sys
tm = dt.datetime.now().strftime("%Y-%m-%d-%H-%M")
with open("/home/oliveryty/文档/" + tm + "监听鼠标3.txt", 'a+') as f:
f.write("from pynput.mouse import Button, Controller as mCtr")
f.write("\n\n")
f.write("from pynput.keyboard import Key, Controller as kCtr")
f.write("\n\n")
f.write("import time")
f.write("\n\n")
f.write("mouse = mCtr()")
f.write("\n\n")
f.write("keyboard = kCtr()")
f.write("\n\n")
with pynput.keyboard.Events() as events:
for j in events:
if j == None:
with pynput.mouse.Events() as events:
m = 0
startTime = time.time()
T = []
T.append(time.time())
for i in events:
#迭代用法。
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("/home/oliveryty/文档/" + tm + "监听鼠标3.txt", "a+") as f:
f.write("\n")
f.write(f"#第{m}下动作:")
if i.button == pynput.mouse.Button.left:
f.write("\n")
f.write(f"mouse.position = {(i.x, i.y)}")
f.write("\n")
f.write(f'{"mouse.press(Button.left)" if i.pressed else "mouse.release(Button.left)"}')
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("/home/oliveryty/文档/" + tm + "监听鼠标3.txt", "a+") as f:
f.write("\n")
f.write(f"#第{m}下动作:")
f.write("\n")
f.write(f"mouse.position = {(i.x, i.y)}")
f.write("\n")
f.write(f"mouse.scroll{(i.dx, 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")
else:
break
else:
if j.key == keyboard.Key.esc:
sys.exit()
elif isinstance(j, pynput.keyboard.Events.Press):
m = m + 1
T.append(time.time())
with open("/home/oliveryty/文档/" + tm + "监听鼠标3.txt", "a+") as f:
f.write("\n")
f.write(f"#第{m}下动作:")
f.write("\n")
f.write("#键盘按下")
f.write("\n")
elif isinstance(j, pynput.keyboard.Events.Release):
m = m + 1
with open("/home/oliveryty/文档/" + tm + "监听鼠标3.txt", "a+") as f:
f.write("\n")
f.write(f"#第{m}下动作:")
f.write("\n")
f.write("#键盘松开")
f.write("\n")
T.append(time.time())
t2 = T[m] - T[m-1]
f.write(f"#输入用时:({t2})")
f.write("\n")
j = events.get(1)