0

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

4

0 回答 0