#python #python-mss
Вопрос:
У меня есть функция в python для захвата части экрана с помощью mss.
def capture_screenshot(x1, y1, width, height):
with mss.mss() as sct:
monitor = {"top": y1, "left": x1, "width": width, "height": height}
sct_img = sct.grab(monitor)
return Image.frombytes('RGB', sct_img.size, sct_img.bgra, 'raw', 'BGRX')
У меня есть еще одна функция для автоматизации действий с помощью событий щелчка из win32
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
Я заметил, что если я вызываю функцию click с некоторыми координатами экрана, она отлично работает при самостоятельном вызове. Но как только я вызываю функцию capture_screen в любом месте, после этого щелчок запутывается и начинает щелкать по разным координатам, возможно, потому, что mss делает что-то, чтобы сделать координаты относительными и т. Д.
Как я могу освободить/отменить/сбросить изменения, которые выполняет функция capture_screenshot? Я думал, что бы он ни делал, это будет ограничено этим методом и не сохранится после того, как эта функция будет существовать.
Комментарии:
1. Поэтому мой дисплей был настроен на масштабирование до 200, и если я вызываю click напрямую, он использует масштабированные координаты. Но если я вызвал capture_screenshot, а затем щелкнул, он начал использовать не масштабированные координаты. Не уверен, почему он ведет себя таким образом, поэтому оставляю этот вопрос открытым на случай, если кто-то может предложить, как вернуть поведение к использованию масштабированных координат снова после использования mss.