KeyboardInterrupt не будет работать, хотя условие явно выполняется - PullRequest
0 голосов
/ 18 января 2020

Я печатаю следующее, когда пользователь нажимает на клавиатуре стрелки:

You picked left! 
You picked left! 
You picked right!

Когда пользователь нажимает escape, KeyboardInterrupt должен быть повышен сразу после печати You pressed escape!, но это не так. You pressed escape! напечатано, но это все. То же самое происходит в JupyterLab и PyCharm.

Почему не вызывается KeyboardInterrupt?

from pynput.keyboard import Key, Listener

class CoolTrick:

    @staticmethod
    def _on_press(key):

        if key == Key.left:
            print('\rYou picked left!',             end='       ')

        if key == Key.right:
            print('\rYou picked right!',            end='       ')

        if key == Key.esc:
            print('\rYou pressed escape!',          end='       ')

            raise KeyboardInterrupt('You interrupted the process by'
                                    'pressing escape.')

    def run(self):
        while True:
            while True:

                with Listener(
                        on_press=self._on_press) as listener:
                    listener.join()

ct = CoolTrick()

ct.run()
You pressed escape! 
You picked right!
...