集装箱堆叠

除非某个项是根项,否则所有项都需要属于有效的容器。项的父项是通过以下过程推导出来的:

  1. 如果Item是根,则不需要父级;已完成。

  2. 检查 在此之前 关键字,如果使用的话跳到5,使用“之前”项的父项。

  3. 检查 父级 关键字,如果使用,跳到5。

  4. 检查容器堆叠,如果使用,跳到5。

  5. 检查父级是否兼容。

  6. 检查家长是否接受。

  7. 如果运行时,则使用运行时方法添加项;已完成。

  8. 如果启动,则使用启动方法添加项;已完成。

可以使用以下命令手动将容器项推送到容器堆栈上 push_container_stack 然后突然使用了 pop_container_stack

此过程在使用以下选项时自动执行 容器和上下文管理器 。下面是一个演示手动堆栈操作的简单示例:

import dearpygui.dearpygui as dpg

dpg.create_context()

dpg.push_container_stack(dpg.add_window(label="Tutorial"))

dpg.push_container_stack(dpg.add_menu_bar())

dpg.push_container_stack(dpg.add_menu(label="Themes"))
dpg.add_menu_item(label="Dark")
dpg.add_menu_item(label="Light")
dpg.pop_container_stack()

# remove menu_bar from container stack
dpg.pop_container_stack()

# remove window from container stack
dpg.pop_container_stack()

dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

外显的父母分配

属性显式分配父级 父级 关键词。这最常用于在运行时添加新项。下面可以使用显式父级赋值再次显示上面的示例:

import dearpygui.dearpygui as dpg

dpg.create_context()

dpg.add_window(label="Tutorial", tag="window")

dpg.add_menu_bar(parent="window", tag="menu_bar")

dpg.add_menu(label="Themes", parent="menu_bar", tag="themes")
dpg.add_menu_item(label="Dark", parent="themes")
dpg.add_menu_item(label="Light", parent="themes")

dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

上下文管理器

可以使用上下文管理器来简化上面的示例。所有上下文管理器都可以在 容器和上下文管理器 但下面是一个简单的例子:

import dearpygui.dearpygui as dpg

dpg.create_context()

with dpg.window(label="Tutorial"):
    with dpg.menu_bar():
        with dpg.menu(label="Themes"):
            dpg.add_menu_item(label="Dark")
            dpg.add_menu_item(label="Light")
            dpg.add_menu_item(label="Classic")

dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()

优势 1.自动将容器推送到容器堆栈。2.自动将容器弹出容器堆栈。3.更结构化、更具可读性的代码。