1
0
forked from Rowland/EG
EG/demo/GUI_README.md
2025-07-02 09:49:59 +08:00

6.3 KiB
Raw Blame History

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系统提供了以下主要组件

  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 - 屏幕文本

    text = OnscreenText(
        text="中文文本",
        font=chinese_font  # 设置中文字体
    )
    
  2. DirectButton - 按钮文本

    button = DirectButton(
        text="按钮文本",
        text_font=chinese_font  # 注意使用text_font参数
    )
    
  3. 字体加载 - 自动检测中文字体

    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: 确保已正确安装PANDA3Dpip install panda3d

Q: 字体加载失败?

A: 使用 basic_gui_demo.pysimple_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: 查看代码中的 frameColortext_fg 等参数设置

Q: 如何添加更多交互?

A: 参考现有的事件处理函数,如 onButtonClick()


扩展学习

这些示例为您提供了PANDA3D GUI系统的基础。您可以

  1. 修改现有代码,尝试不同的参数设置
  2. 组合不同的GUI组件创建自己的界面
  3. 将GUI集成到您的3D应用程序中
  4. 探索PANDA3D的其他高级GUI功能

祝您学习愉快!🎮