DearPyGui的布局非常簡單,就是用一個“組合框”(dpg.group)的組件來布置。
一、說明
你可以將dpg.group看做一個盒子,盒子內(nèi)可以放很多組件(text、button等)
豎向放置
盒子里的組件默認(rèn)的是豎向排列放置的(從上往下),例如:

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內(nèi)的組件')
dpg.add_listbox(items=[1, 2, 3, 4], width=100)
with dpg.group(label='局部組合2', horizontal=False):
dpg.add_text(default_value='局部組合2內(nèi)的組件')
dpg.add_listbox(items=['A', 'B', 'C', 'D'], width=100)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
總結(jié)

image.png
在DearPyGui中,我們可以通過設(shè)置dpg.group的 horizontal 屬性來實現(xiàn)豎向或者橫向排列
豎向排列:horizontal=False (默認(rèn)情況)
橫向排列:horizontal=True (需要設(shè)置)
同時,通過多個組合框(dpg.group)更可以實現(xiàn)上圖所示的復(fù)雜布局
之所以DearPyGui布局比其他Python的GUI庫布局方便就在于此
當(dāng)你把dpg.group想象成一個個盒子,那么布局就像我們小時候玩的壘積木一樣,可以隨意組合。
至于如何能達(dá)到最佳布局,需要在實踐中慢慢摸索。
(作者君懶,且沒有藝術(shù)細(xì)菌,所以作者君的布局一向都是簡單粗暴的,嘿嘿)