52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
测试ImGui docking功能
|
||
"""
|
||
from direct.showbase.ShowBase import ShowBase
|
||
import p3dimgui
|
||
from imgui_bundle import imgui, imgui_ctx
|
||
|
||
class DockingTest(ShowBase):
|
||
def __init__(self):
|
||
ShowBase.__init__(self)
|
||
|
||
# Install Dear ImGui
|
||
p3dimgui.init()
|
||
|
||
# 启用ImGui Docking功能
|
||
imgui.get_io().config_flags |= imgui.ConfigFlags_.docking_enable
|
||
print("✓ ImGui Docking功能已启用")
|
||
|
||
# 添加任务
|
||
self.taskMgr.add(self.__newFrame, "imgui-new-frame")
|
||
|
||
def __newFrame(self, task):
|
||
# 创建全屏DockSpace(在第一帧之后创建)
|
||
if imgui.get_frame_count() > 0:
|
||
viewport = imgui.get_main_viewport()
|
||
imgui.dock_space_over_viewport(0, viewport, imgui.DockNodeFlags_.passthru_central_node)
|
||
|
||
# 测试窗口
|
||
if imgui.get_frame_count() > 10: # 等待几帧后显示
|
||
# 窗口1
|
||
with imgui_ctx.begin("测试窗口1", True):
|
||
imgui.text("这是第一个测试窗口")
|
||
imgui.text("你可以拖拽标题栏来移动窗口")
|
||
imgui.text("也可以拖拽到其他窗口边缘来停靠")
|
||
|
||
# 窗口2
|
||
with imgui_ctx.begin("测试窗口2", True):
|
||
imgui.text("这是第二个测试窗口")
|
||
imgui.text("尝试将这个窗口停靠到第一个窗口")
|
||
imgui.text("或者创建标签页")
|
||
|
||
# 窗口3
|
||
with imgui_ctx.begin("测试窗口3", True):
|
||
imgui.text("这是第三个测试窗口")
|
||
imgui.text("自由调整窗口大小和位置")
|
||
|
||
return task.cont
|
||
|
||
if __name__ == "__main__":
|
||
test = DockingTest()
|
||
test.run() |