开源项目解读 —— Self-Operating Computer Framework # 长期主义 # 价值

价值:生成主函数业务逻辑函数思维导图,帮助理解,PR到开源项目,希望帮助大家理解IPA工作原理,国内没有好的开源项目,我就来翻译分析解读,给大家抛砖引玉。思维导图用文心一言配合其思维导图插件实现。

目录

整体代码框架 

核心代码逻辑

capture_screen_with_cursor # 用光标捕获屏幕

add_grid_to_image # 给图像配上网格 

keyboard_type# 用于通过程序模拟键盘输入

 search # 模拟在操作系统中搜索文本。具体来说,它会模拟按下“开始”键(在Windows中)或“Command”和“空格”键(在MacOS中),然后输入提供的文本并按下“Enter”键。

 keyboard_type# 用于通过程序模拟键盘输入

 keyboard_type# 用于通过程序模拟键盘输入

业务逻辑

架构-模块


整体代码框架 

核心代码逻辑

capture_screen_with_cursor # 用光标捕获屏幕

def capture_screen_with_cursor(file_path):user_platform = platform.system()if user_platform == "Windows":screenshot = pyautogui.screenshot()screenshot.save(file_path)elif user_platform == "Linux":# Use xlib to prevent scrot dependency for Linuxscreen = Xlib.display.Display().screen()size = screen.width_in_pixels, screen.height_in_pixelsmonitor_size["width"] = size[0]monitor_size["height"] = size[1]screenshot = ImageGrab.grab(bbox=(0, 0, size[0], size[1]))screenshot.save(file_path)elif user_platform == "Darwin":  # (Mac OS)# Use the screencapture utility to capture the screen with the cursorsubprocess.run(["screencapture", "-C", file_path])else:print(f"The platform you're using ({user_platform}) is not currently supported")

add_grid_to_image # 给图像配上网格 

def add_grid_to_image(original_image_path, new_image_path, grid_interval):"""Add a grid to an image"""# Load the imageimage = Image.open(original_image_path)# Create a drawing objectdraw = ImageDraw.Draw(image)# Get the image sizewidth, height = image.size# Reduce the font size a bitfont_size = int(grid_interval / 10)  # Reduced font size# Calculate the background size based on the font sizebg_width = int(font_size * 4.2)  # Adjust as necessarybg_height = int(font_size * 1.2)  # Adjust as necessary# Function to draw text with a white rectangle backgrounddef draw_label_with_background(position, text, draw, font_size, bg_width, bg_height):# Adjust the position based on the background sizetext_position = (position[0] + bg_width // 2, position[1] + bg_height // 2)# Draw the text backgrounddraw.rectangle([position[0], position[1], position[0] + bg_width, position[1] + bg_height],fill="white",)# Draw the textdraw.text(text_position, text, fill="black", font_size=font_size, anchor="mm")# Draw vertical lines and labels at every `grid_interval` pixelsfor x in range(grid_interval, width, grid_interval):line = ((x, 0), (x, height))draw.line(line, fill="blue")for y in range(grid_interval, height, grid_interval):# Calculate the percentage of the width and heightx_percent = round((x / width) * 100)y_percent = round((y / height) * 100)draw_label_with_background((x - bg_width // 2, y - bg_height // 2),f"{x_percent}%,{y_percent}%",draw,font_size,bg_width,bg_height,)# Draw horizontal lines - labels are already added with vertical linesfor y in range(grid_interval, height, grid_interval):line = ((0, y), (width, y))draw.line(line, fill="blue")# Save the image with the gridimage.save(new_image_path)

keyboard_type# 用于通过程序模拟键盘输入

def keyboard_type(text):text = text.replace("\\n", "\n")for char in text:pyautogui.write(char)pyautogui.press("enter")return "Type: " + text

 search # 模拟在操作系统中搜索文本。具体来说,它会模拟按下“开始”键(在Windows中)或“Command”和“空格”键(在MacOS中),然后输入提供的文本并按下“Enter”键。

def search(text):if platform.system() == "Windows":pyautogui.press("win")elif platform.system() == "Linux":pyautogui.press("win")else:# Press and release Command and Space separatelypyautogui.keyDown("command")pyautogui.press("space")pyautogui.keyUp("command")time.sleep(1)# Now type the textfor char in text:pyautogui.write(char)pyautogui.press("enter")return "Open program: " + text

 keyboard_type# 用于通过程序模拟键盘输入

def keyboard_type(text):text = text.replace("\\n", "\n")for char in text:pyautogui.write(char)pyautogui.press("enter")return "Type: " + text

 keyboard_type# 用于通过程序模拟键盘输入

def keyboard_type(text):text = text.replace("\\n", "\n")for char in text:pyautogui.write(char)pyautogui.press("enter")return "Type: " + text

业务逻辑

架构-模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/297928.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iApp最新版无服务器多功能软件库源码

无需服务器的多功能软件库源码分享,仅需添加一个后台应用和一个文档即可 使用教程如下: 在浏览器中打开理想后台地址:http://apps.xiaofei.run/user/ 如果没有账号,请注册一个免费账号。 登录账号后,添加一个后台应…

[机器人-3]:开源MIT Min cheetah机械狗设计(三):嵌入式硬件设计

目录 概述: 1、硬件组成 2、通信速率 3、通信协议 4、mbedOS 概述: 以1条腿进行设计,其它腿也一样: 腿部硬件组成 1、硬件组成 1)UP board计算机板卡(Linux OS): 腿部控制器…

多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测

多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测 目录 多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多…

傻瓜式教学Docker 使用docker compose部署 php nginx mysql

首先你可以准备这个三个服务,也可以在docker compose 文件中 直接拉去指定镜像,这里演示的是镜像服务已经在本地安装好了,提供如下: PHP # 设置基础镜像 FROM php:8.2-fpm# install dependencies RUN apt-get update && apt-get install -y \vim \libzip-dev \libpng…

Rebel + LlamaIndex 构建基于知识图谱的查询引擎

目录 一、Rebel解析非结构化数据 模型介绍 三元组 核心代码 二、LlamaIndex 构建知识图谱 三、整体处理流程 四、运行效果 五、完整代码 六、知识拓展 一、Rebel解析非结构化数据 模型介绍 Rebel模型是为端到端语言生成(REBEL)关系提取而设计的。它利用基于 BART 模…

JS常用事件大全

事件 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行。 注意:事件名称大小写敏感。若是事件监听方式,则在事件名的前面取消on。 1. 鼠标事件 给btn按钮添加点击事件,点击弹出 你好! 2. 键盘事件…

接口测试 — 11.logging日志模块处理流程

1、概括理解 了解了四大组件的基本定义之后,我们通过图示的方式来理解下信息的传递过程: 也就是获取的日志信息,进入到Logger日志器中,传递给处理器确定要输出到哪里,然后进行过滤器筛选,通过后再按照定义…

利用STM32和可控硅控制220V加热电路

利用STM32和可控硅控制220V加热电路 Chapter1 利用STM32和可控硅控制220V加热电路一、错误原理图二、正确原理图 Chapter2 可控硅驱动芯片MOC3081/3061Chapter3 一个MOC3061的可控硅触发电路的分析Chapter4 可控硅的两种触发方式:移相触发和过零触发1、过零触发2、移…

将遗留系统分解为微服务:第 2 部分

在当今不断发展的技术环境中,从整体架构向微服务的转变对于许多企业来说都是一项战略举措。这在报销计算系统领域尤其重要。正如我在上一篇文章第 1 部分应用 Strangler 模式将遗留系统分解为微服务-CSDN博客中提到的,让我们探讨如何有效管理这种转变。 …

华为设备VRP系统管理

为了满足企业业务对网络的需求,网络设备中的系统文件需要不断进行升级。另外,网络设备中的配置文件也需要时常进行备份,以防设备故障或其他灾害给业务带来损害。在升级和备份系统文件或配置文件时,经常会使用FTP和TFTP来传输文件。…

vue3项目 - 目录调整

省流 删除默认文件,修改代码 ---> 调整目录结构 ---> 添加全局样式和图片,安装预处理器 具体步骤: 1. 删除初始化的默认文件,修改剩余代码 清空 assets、components、stores、views文件夹里的文件,仅留核心文件…

四. 基于环视Camera的BEV感知算法-PETR

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比5. PETRv2总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习下课程第四章——基…