集装箱堆叠¶
除非某个项是根项,否则所有项都需要属于有效的容器。项的父项是通过以下过程推导出来的:
如果Item是根,则不需要父级;已完成。
检查 在此之前 关键字,如果使用的话跳到5,使用“之前”项的父项。
检查 父级 关键字,如果使用,跳到5。
检查容器堆叠,如果使用,跳到5。
检查父级是否兼容。
检查家长是否接受。
如果运行时,则使用运行时方法添加项;已完成。
如果启动,则使用启动方法添加项;已完成。
可以使用以下命令手动将容器项推送到容器堆栈上 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.更结构化、更具可读性的代码。