如何在Dear PyGui中实现窗口底部组锚定及视口大小自适应?
解决Dear PyGui中固定组到窗口底部的问题
要实现组在窗口大小变化时始终固定在底部,仅靠初始化时设置pos是不够的——窗口尺寸改变后位置不会自动更新。你需要监听视口的大小变化事件,动态调整组的位置:
实现步骤
- 注册视口 resize 回调函数,每次窗口大小改变时重新计算并更新组的位置
- 复用初始化时的位置计算逻辑,在回调中动态更新
代码示例
import dearpygui.dearpygui as dpg dpg.create_context() dpg.create_viewport(title="文件管理及配置编辑工具", width=800, height=600) # 创建铺满视口的主窗口 with dpg.window(label="主窗口", tag="main_win", width=-1, height=-1): # 示例内容:你的文件管理、配置编辑控件 dpg.add_text("文件列表区域") dpg.add_input_text(label="配置内容", multiline=True, height=300) # 底部固定组,初始位置设为视口底部偏移75像素 with dpg.group(tag="bottom_group", pos=(10, dpg.get_viewport_height() - 75)): dpg.add_button(label="保存配置") dpg.add_button(label="刷新文件") dpg.add_button(label="退出") # 窗口大小变化时更新组的位置 def update_bottom_pos(sender, data): # 保持x坐标不变,y坐标随视口高度动态调整 dpg.set_item_pos("bottom_group", (10, dpg.get_viewport_height() - 75)) # 如果要固定在右下角,可修改x坐标: # dpg.set_item_pos("bottom_group", (dpg.get_viewport_width() - 220, dpg.get_viewport_height() - 75)) # 绑定视口 resize 事件到回调函数 dpg.set_viewport_resize_callback(update_bottom_pos) dpg.setup_dearpygui() dpg.show_viewport() dpg.start_dearpygui() dpg.destroy_context()
关键说明
dpg.set_viewport_resize_callback()会在每次窗口大小改变时触发,确保组的位置实时更新- 若要固定在右下角,只需将x坐标改为
视口宽度 - 组的总宽度(示例中220为预估的按钮组宽度,可根据实际控件调整) - 主窗口设置
width=-1, height=-1会自动铺满视口,保证组的位置相对于窗口底部准确
内容的提问来源于stack exchange,提问作者ohyeah2389
相关产品推荐
相关产品推荐

