【问题标题】:Pynput - Restart Listener(or start a new one)?Pynput - 重新启动监听器(或开始一个新的)?
【发布时间】:2020-06-01 21:51:53
【问题描述】:

我正在使用 pynput 模块,我想在满足特定规则 - 条件 - 组合键后重新启动侦听器。

我写的代码如下所示:

from pynput.keyboard import Key, Listener
from langdetect import detect
from pynput import keyboard

def listener_manager():
    #the idea is to return a new listener when needed
    listener = keyboard.Listener(on_press=on_press)
    return listener

def on_press(key):
    global string
    global listener
    global controller
    
    if key == keyboard.Key.esc: #if button escape is pressed close the program
        listener.stop()
    elif key == keyboard.Key.space:
        print(string)
        string=""
    elif key == keyboard.Key.shift:
        listener.stop()
        controller = keyboard.Controller()
        listener = listener_manager()
        listener.start()
        print("New listener started")
    elif key== keyboard.Key.alt_l:
        listener.stop()
        controller = keyboard.Controller()
        listener = listener_manager()
        listener.start()
        print("Left alt pressed")
    else:
        string = ''.join([string,str(key).replace("'","")])


string=""

"""This is the beginning"""
controller = keyboard.Controller()
# Collect events until released

listener = keyboard.Listener(on_press=on_press)
listener.start()

基本上,我想在 shiftalt (或更改语言时)时重新启动侦听器,但我编写的代码并没有真正起作用。

【问题讨论】:

    标签: python-3.x keyboard listener keylogger pynput


    【解决方案1】:

    这样的事情还不够吗:

    listener.stop()
    listener.start()
    

    我在自己的程序中发现这是可行的:

    listener = keyboard.Listener(on_press=on_press)
    

    不使用join 可以使用上面的代码。

    【讨论】:

    • 请在 cmets 中要求澄清。
    猜你喜欢
    • 2021-10-28
    • 2020-05-24
    • 2021-02-11
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多