Every "q'" press print something in Python

Viewed 52

Once I press "q" it prints this text many times. I want to print it once.

import keyboard

while True:
    try:
        if keyboard.is_pressed("q"):
            print('q pressed')
    except:
        break
3 Answers

Your current code is constantly repeating check until q is pressed, which is not cpu efficient, and also once the q is pressed is_pressed will always be True - it does not automatically reset.

There is a good example of what you want in the docs. Do something like this:

keyboard.wait('q')
print('q pressed, continue...')

Note that this will block execution until q is pressed, and will continue after that. If you want to repeat process, simply put it inside while loop:

while True
    keyboard.wait('q')
    print('q pressed, waiting on it again...')

Hi you need to break in your try clause after printing in order for loop to end, just like you did in except;

while True:
    try:
        if keyboard.is_pressed("q"):
            print('q pressed')
            break
    except:
        break

The reason your code repeats is that you do not check for when q is released. this causes the condition if keyboard.is_pressed("q") to run multiple times

to stop this. you need to check for when q is released

for example

import keyboard

is_pressed = False

while True:
    try:
        if keyboard.is_pressed("q") && not is_pressed:
            print('q pressed')
            is_pressed = True:
        if not keyboard.is_pressed("q"):
            is_pressed = False

    except:
        break
Related