Для отмены выполнения coroutines при нажатии кнопки можно использовать модуль asyncio и асинхронные циклы. Можно добавить проверку на состояние кнопки и соответствующее условие для остановки выполнения coroutines.
Пример реализации этого функционала:
```python
import asyncio
async def task():
while True:
print("Running task...")
await asyncio.sleep(1)
async def main():
task_coroutine = task()
task_task = asyncio.create_task(task_coroutine)
while True:
# Проверяем состояние кнопки или другого условия для отмены задачи
if button_is_pressed:
task_task.cancel() # отмена выполнения задачи
break
await asyncio.sleep(0.1)
asyncio.run(main())
```
В данном примере `task()` представляет вашу корутину, которая выполняется каждую секунду. В `main()` создается задача `task_task` на выполнение корутины `task_coroutine`. В цикле main() добавлена проверка на состояние кнопки (здесь условие `button_is_pressed`), и если кнопка нажата, то задача отменяется с помощью `task_task.cancel()`.
Таким образом, при повторном нажатии кнопки выполнение coroutines будет прервано.