import pynput
import time
def poschange(x,y):
#print(f"{x},{y}")
print("poschange called")
pynput.mouse.Controller().position = (0,0)
def stop(key):
#print(key)
try:
if key.char == 'a':
print("stopped")
keyli.stop()
mouli.stop()
exit()
except:
pass
keyli = pynput.keyboard.Listener(on_press = stop)
keyli.start()
mouli = pynput.mouse.Listener(on_move = poschange)
mouli.start()
keyli.join()
mouli.join()
Я просто хочу заблокировать положение мыши, когда мышь на (0,0), пока я не нажму клавишу «а» на клавиатуре, а затем программа завершится, и я снова получу управление своей мышью. Насколько мне известно в этом коде, когда я перемещаю мышь, вызывается метод poschange()
, и положение мыши должно быть установлено обратно в (0,0) и повторяться до тех пор, пока поток слушателя мыши не прекратится, но он просто работает дважды,оператор print в функции poschange()
дважды печатается в консоли, а затем мышь становится вялой и движется медленно, когда я нажимаю «a», слушатели должны остановиться и программа должна завершиться, но это не нужно делать вручную. и только мышь снова становится быстрой и нормальной. Но когда я удаляю строку pynput.mouse.Controller().position = (0,0)
из кода, эта вещь работает так, как я намереваюсь, она печатает оператор print «poschange named» каждый раз, когда я перемещаю мышь, и программа завершается, как и ожидалось, когда я нажимаю клавишу «a».
Может кто-нибудь, пожалуйста, скажите мне, почему и скажите, что с этим не так. Заранее спасибо.