如何检测鼠标点击和按键?

How to detect mouse click and keypress?

我想使用 Python 脚本查找在开始时间和结束时间(开始时间:9:30 和 endtime:10:30)之间是否发生鼠标点击和按键操作。

Python代码在这里:

from pynput.mouse import Listener
from pynput.keyboard import Key, Listener
 
def on_click(x, y, button, pressed):
    if pressed:
        print("Mouse clicked.")

def on_press(key):
    print("key is pressed")

with Listener(on_click=on_click,on_press=on_press) as listener:
    listener.join()

有了这个我可以点击鼠标和按键,但我不知道时间间隔。

我不太了解它,但我认为您可以使用模块 time 中的函数 time。您可以将 start = time.time() 绑定到开始按钮,将 end = time.time() 绑定到结束按钮。然后,对于每个间隔使用 i = end - start.

首先,您的代码对我不起作用。 为了测试它,我不得不做一些改变。 我的问题是鼠标和键盘同时发生。

这里我post我修改的代码:

from pynput.keyboard import Key, Listener
from pynput.mouse import Listener


def on_click(x, y, button, pressed):
    if pressed:
        print("Mouse clicked.")

def on_press(key):
    print("key is pressed")



from pynput import keyboard
key_listener = keyboard.Listener(on_press=on_press)
key_listener.start()

with Listener(on_click=on_click) as listener:
    listener.join()

(来源:Using Mouse and Keyboard Listeners Together in Python

如果你想计算秒、分钟等,你可以像@Ujjwal Dash 说的那样使用time

如果鼠标事件在脚本启动后的 1 到 10 秒之间,则会被注意到。

import time
from pynput.keyboard import Key, Listener
from pynput.mouse import Listener


def on_click(x, y, button, pressed):
    delta_time = (int(time.time()-start_time))
    if delta_time >=1 and delta_time <=10:
        if pressed:
            print("Mouse clicked.")

def on_press(key):
    delta_time = (int(time.time()-start_time))
    print(delta_time)
    print("key is pressed")

start_time = time.time()

from pynput import keyboard
key_listener = keyboard.Listener(on_press=on_press)
key_listener.start()

with Listener(on_click=on_click) as listener:
    listener.join()

delta_time ...脚本启动后的秒数

如果你想让它听一天中的特定时间,你可以使用unix时间并用时间模块转换它。 在此代码中,如果鼠标位于 7:00 和 10:00 当地时间之间,则会被注意到。

import time
from pynput.keyboard import Key, Listener
from pynput.mouse import Listener

def check_time():
    t = time.localtime(time.time())
    if t.tm_hour<= 10 and t.tm_hour>=7:
        return True
    else:
        return False
    

def on_click(x, y, button, pressed):
    if check_time():
        if pressed:
            print("Mouse clicked.")
    else:
        pass

def on_press(key):
    print("key is pressed")

from pynput import keyboard
key_listener = keyboard.Listener(on_press=on_press)
key_listener.start()

with Listener(on_click=on_click) as listener:
    listener.join()