Я печатаю следующее, когда пользователь нажимает на клавиатуре стрелки:
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!