Реализация «break» в функции и строение цикла «while»

Моя программа должна нажимать заданные клавиши и останавливаться при нажатии другой клавиши. В процессе возникла проблема:

Я указал в функции, что в конце должна происходить остановка через break, однако программу невозможно запустить, так как break находится вне цикла. При этом подчеркиваний нет, а функция задается и вызывается в циклах while.

def walking():
    """Walking function"""

    print('Нажмите клавишу', Fore.BLUE + 'CTRL')
    print(Style.RESET_ALL)
    while True:
        if key.is_pressed('ctrl'):
            def stop_bot_check():
                if key.is_pressed('alt'):
                    print(Fore.BLUE + 'Бот приостановлен')
                    print(Style.RESET_ALL)
                    global inf
                    inf = int(input('Чтобы возобновить работу бота, введите цифру "1" и нажмите CTRL: '))
                    break

Затем идет основной цикл, где и будет вызываться эта функция.

    inf = 1
            while inf == 1:
                while not key.is_pressed('alt'):

                    stop_bot_check()  


                    key.press('w')
                    time.sleep(1)
                    key.release('w')
                    time.sleep(1)
                    key.press('s')
                    time.sleep(1)
                    key.release('s')

                    stop_bot_check()
walking()

Все необходимые импорты у меня есть в начале программы. Полностью этот фрагмент кода будет выглядеть так:

def walking():
    """Walking function"""

    print('Нажмите клавишу', Fore.BLUE + 'CTRL')
    print(Style.RESET_ALL)
    while True:
        if key.is_pressed('ctrl'):
            def stop_bot_check():
                if key.is_pressed('alt'):
                    print(Fore.BLUE + 'Бот приостановлен')
                    print(Style.RESET_ALL)
                    global inf
                    inf = int(input('Чтобы возобновить работу бота, введите цифру "1" и нажмите CTRL: '))
                    break
                
            inf = 1
            while inf == 1:
                while not key.is_pressed('alt'):

                    stop_bot_check()  

                    key.press('w')
                    time.sleep(1)
                    key.release('w')
                    time.sleep(1)
                    key.press('s')
                    time.sleep(1)
                    key.release('s')

                    stop_bot_check()
walking()

Надеюсь на помощь! Заранее благодарю.

P.S. в коде, key -- сокращение от названия модуля keyboard: import keyboard as key


Ответы (1 шт):

Автор решения: Amgarak

Может немного сменить подход?



def walking():
    pass #Ваша логика

keyboard.add_hotkey('ctrl', walking)                
keyboard.wait()

Если делать через add_hotkey то при нажатии заданной кнопки, каждый раз будет вызываться ваша функция. И как по мне, так будет проще продумать вашу логику.

→ Ссылка