Как выйти из цикла WHILE через другую функцию

У меня есть цикл While и мне нужно что-бы когда открывалась функция, этот цикл завершался.

Пример:

def exit():
     #код который завершает цикл в функции run

def run():
    global time,delay,x
    delay.configure(state='disabled')
    #time.configure(state='disabled')

    start.grid_remove()
    stop.grid(column=0, row=2)

    delay = int(delay.get())
    #time = int(time.get())


    while x!=1:
        pyautogui.PAUSE = delay
        pyautogui.click(clicks=1)
        keyboard.add_hotkey('e', exit)

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

Автор решения: eri
def exit():
     #код который завершает цикл в функции run
     raise KeyboardInterrupt()

def run():
    global time,delay,x
    delay.configure(state='disabled')
    #time.configure(state='disabled')

    start.grid_remove()
    stop.grid(column=0, row=2)

    delay = int(delay.get())
    #time = int(time.get())

    try:
        while x!=1:
          pyautogui.PAUSE = delay
          pyautogui.click(clicks=1)
          keyboard.add_hotkey('e', exit)
    except KeyboardInterrupt:
        pass
    # код дальше
→ Ссылка