EG/demo/script_gui_test.py
2025-12-12 16:16:15 +08:00

113 lines
3.7 KiB
Python

#!/usr/bin/env python3
"""
脚本管理界面测试
这个脚本测试新添加的脚本管理界面功能:
1. 脚本菜单
2. 脚本管理面板
3. 脚本挂载和卸载
4. 属性面板中的脚本信息显示
"""
import sys
import os
# 确保能导入项目模块
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from main import MyWorld
from ui.main_window import setup_main_window
from panda3d.core import *
def test_script_management():
"""测试脚本管理功能"""
print("=== 脚本管理界面测试 ===")
# 创建世界对象
world = MyWorld()
# 设置主窗口
app, main_window = setup_main_window(world)
# 创建一些测试对象
print("\n1. 创建测试对象...")
# 创建一个立方体
cube = world.loader.loadModel("models/environment")
if cube:
cube.reparentTo(world.render)
cube.setPos(0, 10, 0)
cube.setScale(0.5)
cube.setName("测试立方体")
world.models.append(cube)
print("✓ 创建立方体")
# 更新场景树
world.updateSceneTree()
print("\n2. 脚本系统状态:")
print(f"✓ 脚本系统已启动: {world.script_manager.engine.update_task is not None}")
print(f"✓ 热重载已启用: {world.script_manager.hot_reload_enabled}")
print(f"✓ 可用脚本数量: {len(world.getAvailableScripts())}")
print("\n3. 测试脚本创建...")
# 创建一些测试脚本
test_scripts = [
("TestRotator", "basic"),
("TestMover", "movement"),
("TestScaler", "basic")
]
for script_name, template in test_scripts:
try:
success = world.createScript(script_name, template)
if success:
print(f"✓ 创建脚本: {script_name}")
else:
print(f"✗ 创建脚本失败: {script_name}")
except Exception as e:
print(f"✗ 创建脚本出错 {script_name}: {e}")
print("\n4. 加载所有脚本...")
try:
scripts_loaded = world.loadAllScripts()
print(f"✓ 成功加载 {len(scripts_loaded)} 个脚本")
for script_name in scripts_loaded:
print(f" - {script_name}")
except Exception as e:
print(f"✗ 加载脚本失败: {e}")
print("\n5. 测试脚本挂载...")
if cube and world.getAvailableScripts():
script_name = world.getAvailableScripts()[0]
try:
success = world.addScript(cube, script_name)
if success:
print(f"✓ 成功挂载脚本 {script_name} 到立方体")
# 获取挂载的脚本
scripts = world.getScripts(cube)
print(f"✓ 立方体上的脚本数量: {len(scripts)}")
else:
print(f"✗ 挂载脚本失败")
except Exception as e:
print(f"✗ 挂载脚本出错: {e}")
print("\n6. 界面使用说明:")
print("" * 50)
print("• 使用菜单栏 -> 脚本 来访问脚本功能")
print("• 在右侧停靠窗口中查看'脚本管理'标签页")
print("• 选择场景中的对象查看其脚本属性")
print("• 使用脚本面板挂载/卸载脚本")
print("• 双击脚本名称可以(将来)打开外部编辑器")
print("• 热重载功能会自动检测脚本文件变化")
print("" * 50)
print("\n✓ 脚本管理界面测试完成!")
print("现在可以通过GUI界面管理脚本了。")
# 启动应用
return app.exec_()
if __name__ == "__main__":
sys.exit(test_script_management())