DearPyGui的布局非常简单,就是用一个“组合框”(dpg.group)的组件来布置。
一、说明
你可以将dpg.group看做一个盒子,盒子内可以放很多组件(text、button等)
竖向放置
盒子里的组件默认的是竖向排列放置的(从上往下),例如:

image.png
with dpg.window(label='Test', width=1260, height=480):
with dpg.group():
dpg.add_input_text(label='组件1(input_text)', width=200)
dpg.add_button(label='组件2(button)',width=200)
dpg.add_radio_button(items=['组件3(radio_button1)', '组件3(radio_button2)', '组件3(radio_button3)'])
横向放置

image.png
with dpg.window(label='Test', width=1260, height=480):
with dpg.group(horizontal=True):
dpg.add_input_text(label='组件1(input_text)', width=200)
dpg.add_button(label='组件2(button)',width=200)
dpg.add_radio_button(items=['组件3(radio_button1)', '组件3(radio_button2)', '组件3(radio_button3)'])
二、组合放置

image.png

组合框示意图.png
import dearpygui.dearpygui as dpg
dpg.create_context()
# 注册字体,自选字体
with dpg.font_registry():
with dpg.font("song.ttf", 18) as font1: # 增加中文编码范围,防止问号
dpg.add_font_range_hint(dpg.mvFontRangeHint_Default)
dpg.add_font_range_hint(dpg.mvFontRangeHint_Chinese_Simplified_Common)
dpg.add_font_range_hint(dpg.mvFontRangeHint_Chinese_Full)
dpg.bind_font(font1)
dpg.create_viewport(title="DearPyGui_test", width=700, height=700)
with dpg.window(label='Test', width=1260, height=480):
with dpg.group(label='整体组合', horizontal=True, horizontal_spacing=20):
with dpg.group(label='局部组合1', horizontal=False):
dpg.add_text(default_value='局部组合1内的组件')
dpg.add_listbox(items=[1, 2, 3, 4], width=100)
with dpg.group(label='局部组合2', horizontal=False):
dpg.add_text(default_value='局部组合2内的组件')
dpg.add_listbox(items=['A', 'B', 'C', 'D'], width=100)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
总结

image.png
在DearPyGui中,我们可以通过设置dpg.group的 horizontal 属性来实现竖向或者横向排列
竖向排列:horizontal=False (默认情况)
横向排列:horizontal=True (需要设置)
同时,通过多个组合框(dpg.group)更可以实现上图所示的复杂布局
之所以DearPyGui布局比其他Python的GUI库布局方便就在于此
当你把dpg.group想象成一个个盒子,那么布局就像我们小时候玩的垒积木一样,可以随意组合。
至于如何能达到最佳布局,需要在实践中慢慢摸索。
(作者君懒,且没有艺术细菌,所以作者君的布局一向都是简单粗暴的,嘿嘿)