用Python模拟鼠标点击/检测光标下的颜色

7

我对Python非常不熟悉。我试图编写一个程序,可以在鼠标单击(x,y)后将其移动到(a,b),然后等待鼠标下方的颜色变为特定颜色,比如#fff。当它是这种颜色时,再次单击鼠标并重复此过程。

我找不到一个适用于Python的好的与鼠标相关的API。


2
您可以在此处找到有关点击的一些信息:https://dev59.com/rXM_5IYBdhLWcg3w4njb - user178982
2个回答

9

模拟鼠标事件的API取决于您的平台。我不知道任何跨平台的解决方案。

在Windows上,您可以通过ctypes访问Win32 API。请参见MSDN上的mouse_event。您可能还对pywinauto感兴趣。

要获取鼠标下方的颜色,您需要鼠标位置。请参见MSDN上的GetCursorPos。然后,如果您的应用程序具有获取此位置处颜色的API,则可以使用它。如果没有,您可以尝试抓取光标周围屏幕的一小部分,并使用PIL获取该区域中每个像素的颜色。我认为PIL截屏仅适用于Windows平台,但我不确定。

我正在使用以下函数来满足类似的需求:

def grab_main_color(self, rect, max_colors=256):
    """returns a tuple with the RGB value of the most present color in the given rect"""
    img=ImageGrab.grab(rect)
    colors = img.getcolors(max_colors)
    max_occurence, most_present = 0, 0
    try:
        for c in colors:
            if c[0] > max_occurence:
                (max_occurence, most_present) = c
        return most_present
    except TypeError:
        raise Exception("Too many colors in the given rect")

-1

如果你使用的是Windows系统,那么在这种情况下,你真的应该尝试一下autohotkey。虽然它不是Python,但对于在Windows机器上完成此类任务来说,它确实是非常强大的工具。而且用户社区也非常乐于助人。你可以去他们的“求助”论坛看看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接