91 lines
3.2 KiB
Python
91 lines
3.2 KiB
Python
#!/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() |