EG/demo/test_toolbar_gui.py
2025-07-02 09:49:59 +08:00

91 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
工具栏GUI测试
模拟用户点击工具栏按钮创建GUI元素
"""
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import QTimer
# 导入主程序
from test import MyWorld, CustomPanda3DWidget
def testToolbarGUI():
"""测试工具栏GUI创建功能"""
print("=== 工具栏GUI创建测试 ===")
app = QApplication(sys.argv)
# 创建主程序的世界对象
world = MyWorld()
# 创建窗口
mainWindow = QMainWindow()
mainWindow.setWindowTitle("工具栏GUI测试")
mainWindow.setGeometry(100, 100, 800, 600)
# 创建Panda3D部件
pandaWidget = CustomPanda3DWidget(world)
mainWindow.setCentralWidget(pandaWidget)
# 显示窗口
mainWindow.show()
# 模拟工具栏按钮点击
def createGUIElements():
print("\n模拟工具栏按钮点击...")
# 创建一些GUI元素使用合理的坐标
print("创建GUI按钮...")
button1 = world.createGUIButton((0, 0, 0), "中心按钮", 0.08)
print(f"按钮1屏幕位置: {button1.getPos()}")
button2 = world.createGUIButton((-10, 0, 0), "左按钮", 0.08)
print(f"按钮2屏幕位置: {button2.getPos()}")
button3 = world.createGUIButton((10, 0, 0), "右按钮", 0.08)
print(f"按钮3屏幕位置: {button3.getPos()}")
print("创建GUI标签...")
label1 = world.createGUILabel((0, 0, -10), "测试标签", 0.06)
print(f"标签1屏幕位置: {label1.getPos()}")
print("创建GUI输入框...")
entry1 = world.createGUIEntry((0, 0, -15), "输入测试", 0.05)
print(f"输入框1屏幕位置: {entry1.getPos()}")
print("创建3D文本...")
text3d = world.createGUI3DText((0, 5, 2), "3D测试", 0.5)
print(f"3D文本位置: {text3d.getPos()}")
print(f"\n总共创建了 {len(world.gui_elements)} 个GUI元素")
# 检查所有坐标是否在有效范围内
print("\n检查2D GUI坐标范围:")
for i, element in enumerate(world.gui_elements):
if hasattr(element, 'getTag'):
gui_type = element.getTag("gui_type")
if gui_type in ["button", "label", "entry"]:
pos = element.getPos()
x, z = pos.getX(), pos.getZ()
in_range = (-1 <= x <= 1) and (-1 <= z <= 1)
print(f" {gui_type}: ({x:.3f}, {z:.3f}) - {'' if in_range else '✗ 超出范围'}")
print("\n如果你能看到蓝色按钮、白色标签和输入框,说明修复成功!")
print("如果只能看到黄色3D文本说明2D GUI坐标可能仍有问题。")
# 1秒后创建GUI元素
QTimer.singleShot(1000, createGUIElements)
print("窗口已显示即将测试GUI创建...")
return app.exec_()
if __name__ == "__main__":
testToolbarGUI()