Press esc to stop and any other key to continue in Python

10,535

you can use pynput,it's easier to use.

from pynput import keyboard

def _start():
     print("HelloWorld")
def on_press(key):
    if key == keyboard.Key.esc:
        # Stop listener
        return False
    else:
        _start()

# Collect events until released
with keyboard.Listener(
        on_press=on_press) as listener:
    listener.join()
Share:
10,535
CoXier
Author by

CoXier

An engineer focused on Android and Python.

Updated on July 16, 2022

Comments

  • CoXier
    CoXier almost 2 years

    Now with help of raw_input, I can call a method every time user presses Enter.

    if __name__ == '__main__':
        while True:
            raw_input("Press Enter to continue...")
            _start()
    def _start():
         print("HelloWorld")
    

    There is a problem because only Ctrl + C, the program can be stopped. As you see, I make my program to wait user to press key.

    From opencv, I find there is a similar need.

    # Hit 'q' on the keyboard to quit!
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    

    Simply I want to press esc key to exit program and press any other key to continue. So there is any way to do like this?

    In Addition

    My os is OSX.

  • CoXier
    CoXier about 6 years
    The output is very strange.
  • ChatterOne
    ChatterOne about 6 years
    Can you be a bit more specific? There should be no output except for the keys that you press
  • CoXier
    CoXier about 6 years
    Yes after I press ESC, the output disappear. But when the program is running, I press any other key, the format of output is very strange.
  • ChatterOne
    ChatterOne about 6 years
    I tried this on OS X and iTerm2, are you using a different terminal?
  • CoXier
    CoXier about 6 years
    Have you added _start() method?
  • ChatterOne
    ChatterOne about 6 years
    If you are in a curses screen, print might work slightly differently. If you're talking about the fact that it doesn't go back to the start of the line, try adding a \r to the end of the string, like print('HelloWorld\r') and see if that works.
  • CoXier
    CoXier about 6 years
    From doc pynput.readthedocs.io/en/latest/limitations.html#mac-osx, I find we must run program as root.