有没有人能够告诉我,为什么这样写代码,不能实现pynput同时监听键盘和鼠标呢?求大神们给个思路!!

代码如下:

思路是先执行监听键盘的循环,只有当一秒钟键盘无动作时(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)




                        
                    

            

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值