我在 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 功能所做的更改?我认为无论它做什么都将仅限于该方法,并且在该功能存在后不会持续存在。