tkinter, и функция с while True

Рейтинг: 0Ответов: 1Опубликовано: 16.02.2023

Использую tkinter, при нажатии на кнопку в вызванмом меню, запускается функция в которой есть while True, из-за чего пока функция работает я не могу использовать меню в tkinter, могу ли я запускать и останавливать функцию через tkinter, чтобы меню и функция помогли работать по отдельности :

Пример - нажал на кнопку on запустилась функция, меню продолжает работать и функция тоже, при нажатии кнопки off выключается функция а меню остаётся.

Был бы очень рад если поможете

Ответы

▲ 0

Я могу предложить вам несколько вариантов решения:

  1. Использовать метод .after()

    def loop():
        root.after(10, loop) # где 10 это время через которое будет вызвана функция loop в мс
        # Ваш код
    loop() # Функцию достаточно вызвать лишь единожды после чего она будет выполняться постоянно
    
  2. Использовать потоки

    from threading import Thread
    
    def loop():
        while True:
           # Ваш код
    new_thread = Thread(target=loop)  # Создаём поток
    new_thread.start()  # Запускаем поток
    
  3. Использовать асинхронность. Ответы уже были даны и описаны максимально обширно вот тут: Use asyncio and Tkinter