这是一个围绕win32api、pyautogui和pynput的包装器。

RazbiUtils的Python项目详细描述


拉兹比乌提斯

这个包是win32api、pyautogui和pynput的包装器,用于截屏。在

pip install RazbiUtils

RazbiUtils至少支持python3.6,我只在^{str1}$windows上测试过。不能保证在linux上运行。在

API的设计类似于pyautogui,但它解决了pyautogui存在的许多问题。在

它解决的第一个问题是鼠标输入,通过在内部使用pynput进行鼠标单击和键盘键,这确保所有程序/游戏都将收到输入。这对chrome来说不是问题,但在其他许多随机程序中都是如此。在

第二个问题是点击速度和屏幕截图速度。单击速度再次由pynput确定,对于屏幕截图,我使用了franecklp使用win32api编写的内容[这里有一个指向屏幕截图来源的链接https://pythonprogramming.net/next-steps-python-plays-gta-v/]

我试图解决的第三个问题是使它适用于多个监视器,并使坐标系更容易,方法是让您指定屏幕的某些部分而不使用特定的坐标。我已经通过使用win32api检测监视器并组织它来解决这个问题。在

示例

基本模板检测

fromRazbiUtilsimportScreenScrapersc=ScreenScraper()path_to_template='object_to_detect'ifsc.find_on_screen_bool(path_to_template):print("Object Detected")

假设您有一个指向当前主屏幕上实际的.png的路径。脚本应该能够检测到它。 [对于管理模板图像,我强烈建议油漆.nethttps://www.dotpdn.com/downloads/pdn.html免费,使用方便,重量轻]

好吧,但让我们稍微有趣一点:让它点击找到的对象:

^{pr2}$

Object Detected at Box(left=1590, top=951, width=189, height=54)

请注意,我使用found[0]而不是仅仅使用found,因为默认情况下,屏幕截图返回所有找到的对象的列表,[0]是第一个。 如果你不使用sc.中心(),您将只使用检测到的图像的左上角。在

假设您想截取第二台显示器上可见的内容,pyautogui通常无法做到这一点,但使用RazbiUtils,您只需:

fromRazbiUtilsimportScreenScraper,ScreenManagersc=ScreenScraper()path_to_template='object_to_detect'ifsc.find_on_screen_bool(path_to_template,ScreenManager.screens[1]):print("Object Detected")

屏幕的顺序基本上就是你在操作系统中设置的顺序。在

此外,如果您只想截图特定的部分,使屏幕截图快速而无实际坐标,您可以: ScreenManager.screens[0].bottom_right只在右下角。你也可以做ScreenManager.main_screen,这与ScreenManager.screens[0]相当

注意:如果您想以更短的形式引用ScreenManager,比如sm

任何应用程序的鼠标点击支持

我指的只是点击,鼠标移动肯定不起作用。 请记住,它在内部使用pynput进行单击,因此如果您只想这样做,只需使用pynput。在

在InputController.click{cd11}默认有一个参数。 这意味着点击之间的延迟是1/60,即0.016,这将保证它将注册的点击,如果应用程序是60fps。在

由于某些原因,pyautogui的点击在大多数游戏中都不起作用,所以可以使用这个库或者pynput进行点击

支持

如果我还没用过的话,我会把所有的东西都加进去的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jsoup有效文件路径抛出java。木卫一。FileNotFoundException   java如何在不删除和添加Mapbox中的层的情况下更改SymbolLayer的Z值?   java计算用户定义年数内四个季度的降雨量   如何在Java中轻松地将格式为“20 0F 01”的字符串更改为十六进制值?   java在JPA或Hibernate中“持久类”和“实体”之间有什么区别?   java Android:AlarmManager“缺少对unregisterReceiver()的调用?”当按下后退按钮时   logcat中的java错误“isDataSchedulerEnabled():false”   java i/p col特性必须是字符串或数字类型,但不能是org。阿帕奇。火花利纳格小姐。向量   java如何从Post请求url和浏览器转储中隐藏密码   多线程javamail中的java问题   java我的用户应该直接连接到数据库吗?如何将用户连接到数据库;   java如何获得Spring数据JPA存储库工厂?   windows java字节数组转换为字符串,但不同的操作系统会产生不同的结果   java代码在eclipse中编译,但不在命令行上编译