如何正确终止pynput调用?现在它让我的X崩溃了(self.socket_错误)

2024-09-29 17:16:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pynput('pijnput'翻译成pain-pijnput)模块来捕获键盘。 这是我的代码:

    class KeyPress:
    def __init__(self,parent):
        self.parent=parent

    def on_press(self,key):
        #keyboard.Listener.stop()
        try:
            self.parent.pressedKey=key.char
            self.parent.pressedKeyCode=None
        except AttributeError:
            self.parent.pressedKey=key
            self.parent.pressedKeyCode=key.value.vk
        return False


    def on_release(self,key):
        if key == keyboard.Key.esc:
            # Stop listener
            return False

    # Collect events until released
    def run(self):
        with keyboard.Listener(
                on_press=self.on_press,
                on_release=self.on_release,suppress=True) as listener:
            listener.join()

我创建了一个子类,它将key和keyCode分配给主类中的属性 如果我运行它,它会正常工作,直到我按下一定数量的键,然后X崩溃,我得到这个错误。 一开始我在ipython+tmux中运行这个,但是在纯bash中也会发生这种情况。在

^{pr2}$

我猜我创建了太多的线程,因为我没有终止它们。 虽然我认为“with”结构能解决这个问题? 这是对的吗?如果是这样的话,我该怎么做才能让它成功呢?在

提前谢谢


Tags: keyselffalsereleasereturnondefparent

热门问题