简体   繁体   English

如何从 pynput.keyboard.Listener 线程获取返回值?

[英]How to get the return value from pynput.keyboard.Listener Thread?

I would like to get the return value of a function within pynput.keyboard.Listener .我想在 pynput.keyboard.Listener 中获取pynput.keyboard.Listener的返回值。 The only thing I thought it could work was using global variables.我认为它唯一可行的就是使用全局变量。 Also ThreadPool , but I think it will not work in this predefine threading.thread from pynput called keyboard.Listener()也是ThreadPool ,但我认为它不会在这个来自 pynput 的预定义 threading.thread 中工作,称为 keyboard.Listener()

SAMPLE CODE示例代码

message = ' '
keys = []

def write_keys(keys):
    global message
    for key in keys:
        k = str(key).replace(f'{chr(39)}', '')
        print(k)
        message += k
    if len(message) == 10:
        return message # return this value

def on_press(key):
    global keys
    keys.append(key)
    write_keys(keys)
    keys = []

keyboard_thread = keyboard.Listener(on_press=on_press)
keyboard_thread.start()
#messages = return the message value

If you want to avoid using global variable.You could use ThreadQueue.如果你想避免使用global变量。你可以使用 ThreadQueue。

from pynput import keyboard
from queue import Queue

message = ''
keys = []

queue = Queue()

def write_keys(keys):
    global message
    for key in keys:
        k = str(key).replace(f'{chr(39)}', '')
        print(k)
        message += k
    if len(message) == 10:
        queue.put(message)

def on_press(key):
    global keys
    keys.append(key)
    write_keys(keys)
    keys = []

keyboard_thread = keyboard.Listener(on_press=on_press)
keyboard_thread.start()
while True:
    messages = queue.get()
    print(messages)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM