R:资源路径调度器
R 类是一个静态工具类,负责锚定项目的根目录。它能自动识别当前运行环境(开发模式 vs 打包模式),并提供简便的接口来访问 res 目录下的 UI、图像和其他资源。
1. 导入模块
# 导入资源管理类
from ascript.windows.system import R
2. 开发者常用接口 (工程资源)
这些接口主要用于获取开发者自己编写的脚本工程中 res 文件夹下的文件路径。
🌐 获取 UI 路径 ui()
获取工程中 res/ui/ 目录下的 HTML 或相关资源文件路径。
代码块:
# 获取 UI 文件路径
R.ui(path)
参数详解:
- path (str): 相对于
res/ui/的文件名或子路径。
🖼️ 获取图像路径 img()
获取工程中 res/img/ 目录下的图片文件路径,常用于图色识别。
代码块:
# 获取图片路径
R.img(path)
参数详解:
- path (str): 相对于
res/img/的图片文件名。
📦 获取通用资源路径 res()
获取工程 res/ 根目录下的任何文件路径。
代码块:
# 获取通用资源
R.res(path)
参数详解:
- path (str): 相对于
res/的文件路径。
3. 内部资源接口 (AScript 核心资源)
⚙️ 获取内置资源 internal()
该方法供 AScript 框架内部调用,用于查找 AScript 包自身携带的内置网页、图标或配置文件。
代码块:
# 查找 AScript 内部文件
R.internal(*sub_paths)
参数详解:
- *sub_paths (str): 变长参数,代表包内的层级结构。
- 示例:
R.internal("windows", "tools", "web", "index.html")
- 示例:
4. 环境适配原理
R 类内部实现了复杂的路径自适应逻辑,解决了脚本在“打包成 EXE”后的路径偏移问题:
| 运行环境 | 路径锚定策略 |
|---|---|
| 开发模式 | 以 main.py 所在的物理文件夹作为根目录。 |
| Nuitka 打包 | 优先读取环境变量 NUITKA_ONEFILE_PARENT 获取解压临时目录。 |
| PyInstaller 打包 | 通过 sys._MEIPASS 获取单文件解压目录。 |
| ** site-packages** | AScript 核心资源会锚定 ascript 库安装的物理位置。 |
💡 案例演示
from ascript.windows.ui import WebWindow
from ascript.windows.system import R, FindImages
# 1. 加载工程中的 UI 界面
# 实际指向:工程目录/res/ui/login.html
win = WebWindow(R.ui("login.html"))
# 2. 进行图色识别时使用资源路径
# 实际指向:工程目录/res/img/start_btn.png
btn_path = R.img("start_btn.png")
pos = FindImages.find_all_template(btn_path)
# 3. 打印当前工程的根目录
print(f"项目运行在: {R.get_root()}")
⚠️ 调试小贴士
如果文件存在但 R 方法返回了路径,控制台会输出如下警告:
⚠️ [R] 找不到路径: C:\YourProject\res\ui\missing.html
ℹ️ [R] 当前基准目录为: C:\YourProject
当你看到此类警告时,请检查:
- 文件名拼写(