Как настроить прерывание при перемещении курсора мыши?

Как я могу правильно настроить процесс, чтобы при изменении положения курсора происходила остановка потока? В моей текущей реализации, несмотря на условие, что должно привести к выбрасыванию исключения, переменная b всегда остается false. Странным образом, даже когда значения x и y удовлетворяют условию для прерывания потока, оно все равно не выполняется. Почему это происходит и как можно исправить эту ситуацию?
  • 28 декабря 2023 г. 22:17
Ответы на вопрос 2
Для настройки прерывания при перемещении курсора мыши, вы можете использовать модуль `pynput` из Python. Вот пример, который позволяет остановить поток при перемещении курсора мыши:

```python
from pynput.mouse import Listener

def on_move(x, y):
    # Здесь вы можете проверить условие для прерывания потока
    if x == 100 and y == 100:
        raise Exception("Thread interrupted")

with Listener(on_move=on_move) as listener:
    listener.join()
```

В этом примере мы используем функцию `on_move`, которая вызывается каждый раз, когда курсор мыши перемещается. Внутри этой функции мы можем проверить условие для прерывания потока. В нашем случае, если позиция курсора x и y равны 100, мы вызываем исключение, чтобы остановить поток.

Если вы хотите использовать это в своей текущей реализации, вы можете вставить данный код в свою функцию потока и вызвать его перед запуском потока.

Относительно вашей текущей реализации, если переменная `b` всегда равна `False`, возможно у вас есть проблема в вашем коде, которую не видно из вашего вопроса. Рекомендуется использовать приведенный выше метод с использованием модуля `pynput`.
Так работает: 
Добавил флаг, потому что запускатся по кнопке и он сразу ловит "не те" координаты и останавливается.
Может кому сгодится.
Похожие вопросы