# PANDA3D GUI功能测试文件 本项目包含了多个PANDA3D GUI功能的测试示例,帮助您了解和学习PANDA3D的GUI系统。 ## 文件说明 ### 1. `basic_gui_demo.py` - 基础GUI演示 🌟 **推荐从这个开始学习** 这是最简单的GUI示例,包含: - 基本按钮(DirectButton) - 文本标签(DirectLabel) - 屏幕文本(OnscreenText) - 简单的事件处理 - 按钮颜色变化效果 **运行方式:** ```bash python3 basic_gui_demo.py ``` **功能:** - 点击"点击我!"按钮可以看到计数增加 - 按钮颜色会循环变化 - 状态标签会显示当前点击次数 - 红色"退出"按钮可以关闭程序 --- ### 2. `simple_gui_test.py` - 完整GUI组件测试 ⭐⭐ **中级学习示例** 包含更多GUI组件: - 多种按钮样式 - 文本输入框(DirectEntry) - 滑块控件(DirectSlider) - 复选框(DirectCheckButton) - 选项菜单(DirectOptionMenu) - 实时状态更新 **运行方式:** ```bash python3 simple_gui_test.py ``` **功能:** - 测试按钮:点击增加计数 - 重置按钮:重置所有控件状态 - 文本输入:在输入框中输入文本并按回车 - 滑块:拖动查看数值实时变化 - 复选框:切换特殊模式 - 选项菜单:选择不同选项 - 状态栏显示当前操作 --- ### 3. `gui_test.py` - 高级GUI功能展示 ⭐⭐⭐ **高级功能演示** 最复杂的GUI示例,包含: - 所有DirectGUI组件 - 单选按钮组(DirectRadioButton) - 滚动框架(DirectScrolledFrame) - 密码输入框 - 复杂的事件处理系统 - 自定义字体加载 **运行方式:** ```bash python3 gui_test.py ``` **注意:** 如果字体加载失败,程序可能无法正常运行。 --- ### 4. `gui_3d_demo.py` - 3D空间GUI演示 🚀 **3D GUI概念展示** 展示如何在3D空间中使用GUI: - 2D界面控制3D场景 - 3D空间中的文本元素 - 虚拟3D屏幕 - 3D对象与GUI交互 - 动画和场景控制 **运行方式:** ```bash python3 gui_3d_demo.py ``` **功能:** - 旋转场景:让3D对象旋转 - 变换颜色:改变场景颜色方案 - 重置:恢复初始状态 - 3D文本:在3D空间中显示文字 - 虚拟屏幕:3D空间中的信息显示板 --- ### 5. `chinese_gui_test.py` - 中文字体支持测试 🇨🇳 **中文字体显示解决方案** 专门解决中文字体在PANDA3D中的显示问题: - 自动检测和加载中文字体 - 支持OnscreenText中文显示 - 支持DirectButton中文显示 - 字体加载状态检测 - 多种中文字体路径支持 **运行方式:** ```bash python3 chinese_gui_test.py ``` **功能:** - 测试中文字体在各种GUI组件中的显示 - 显示字体加载状态和建议 - 演示正确的中文字体使用方法 ### 📊 中文字体修复状态 | 文件 | 修复状态 | 支持组件 | |------|----------|----------| | `chinese_gui_test.py` | ✅ 完成 | OnscreenText, DirectButton | | `gui_test.py` | ✅ 完成 | 所有DirectGUI组件 | | `simple_gui_test.py` | ✅ 完成 | 基础GUI组件 | | `basic_gui_demo.py` | ✅ 完成 | 基础组件 | | `gui_3d_demo.py` | ✅ 完成 | 2D/3D文本组件 | --- ## PANDA3D GUI系统概述 ### DirectGUI 组件 PANDA3D的DirectGUI系统提供了以下主要组件: 1. **DirectButton** - 按钮 - 可自定义颜色、大小、文本 - 支持点击事件处理 2. **DirectLabel** - 标签 - 显示静态文本 - 可设置背景和文字颜色 3. **DirectEntry** - 文本输入框 - 单行或多行文本输入 - 支持密码模式(obscured) 4. **DirectSlider** - 滑块 - 水平或垂直方向 - 数值范围可自定义 5. **DirectCheckButton** - 复选框 - 开/关状态切换 - 可绑定状态变化事件 6. **DirectRadioButton** - 单选按钮 - 单选按钮组 - 共享变量控制选择状态 7. **DirectOptionMenu** - 选项菜单 - 下拉选择列表 - 支持动态选项更新 8. **DirectScrolledFrame** - 滚动框架 - 可滚动的内容区域 - 支持垂直和水平滚动 ### 3D空间GUI PANDA3D还支持在3D空间中创建GUI元素: 1. **TextNode** - 3D文本节点 - 可放置在3D空间任意位置 - 支持billboard效果(总是面向相机) 2. **虚拟屏幕** - 使用CardMaker创建 - 3D空间中的平面显示区域 - 可在上面显示文本或图像 3. **混合GUI** - 2D控制3D场景 - 2D界面控制3D对象 - 实时交互和反馈 ### 中文字体支持 PANDA3D的中文字体支持需要特殊处理: 1. **OnscreenText** - 屏幕文本 ```python text = OnscreenText( text="中文文本", font=chinese_font # 设置中文字体 ) ``` 2. **DirectButton** - 按钮文本 ```python button = DirectButton( text="按钮文本", text_font=chinese_font # 注意使用text_font参数 ) ``` 3. **字体加载** - 自动检测中文字体 ```python font_paths = [ '/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', '/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc' ] ``` --- ## 学习建议 1. **从基础开始**:先运行 `basic_gui_demo.py` 2. **逐步深入**:然后尝试 `simple_gui_test.py` 3. **探索高级功能**:学习 `gui_test.py` 中的复杂组件 4. **创新应用**:最后体验 `gui_3d_demo.py` 的3D GUI概念 ## 常见问题 ### Q: 程序无法启动? A: 确保已正确安装PANDA3D:`pip install panda3d` ### Q: 字体加载失败? A: 使用 `basic_gui_demo.py` 或 `simple_gui_test.py`,它们不依赖外部字体 ### Q: 中文显示为方块? A: 需要安装中文字体: ```bash # 运行字体安装脚本 bash install_chinese_fonts.sh # 或手动安装 sudo apt-get install fonts-wqy-microhei fonts-wqy-zenhei ``` ### Q: 按钮中的中文无法显示? A: DirectButton需要使用 `text_font` 参数来设置字体,参考 `chinese_gui_test.py` 的解决方案 ### Q: 如何自定义GUI样式? A: 查看代码中的 `frameColor`、`text_fg` 等参数设置 ### Q: 如何添加更多交互? A: 参考现有的事件处理函数,如 `onButtonClick()` 等 --- ## 扩展学习 这些示例为您提供了PANDA3D GUI系统的基础。您可以: 1. 修改现有代码,尝试不同的参数设置 2. 组合不同的GUI组件创建自己的界面 3. 将GUI集成到您的3D应用程序中 4. 探索PANDA3D的其他高级GUI功能 祝您学习愉快!🎮