Search code examples
pythonpython-3.xpynput

py script stop after execute


I have the following script:

import time
from pynput import keyboard
from pynput.keyboard import Key, Listener

STATUS=False
COMBINATION={keyboard.Key.esc, keyboard.Key.alt}

# The currently active modifiers
current = set()

def on_press(key):
    if key in COMBINATION:
        current.add(key)
        if all(k in current for k in COMBINATION):
            STATUS = False
    if key == keyboard.Key.esc:
        # Stop listener
        STATUS = True

def on_release(key):
    try:
        current.remove(key)
    except KeyError:
        pass

def hp(delay):
    keyboard.press(Key.f1)
    keyboard.release(Key.f1)
    time.sleep(delay)

def cp():
    keyboard.press(Key.f2)
    keyboard.release(Key.f2)

def main():
    with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
            listener.join()
    while True:
        while STATUS:
            for i in range(3):
                hp(0.5)
            cp()

when I generate an executable with pyinstaller or even run it through the end with python3, the script simply doesn't loop as I had thought (run forever) as I don't have any err messages, I don't know where my err might be, can anyone help?


Solution

  • You need to create an entry point for your script. Add this to the bottom of you file, and try again:

    if __name__ == '__main__':
        main()