You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:33:23