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