PySimpleGUI如何实现同一行两个元素设置不同expand属性
解决方案
PySimpleGUI旧版本存在同一行多个元素的横向扩展规则冲突问题,可通过以下两种方案解决:
- 方案1:使用Column容器包裹不需要横向扩展的元素
将Tree组件放到独立Column中单独控制扩展属性,避免和同行Table的扩展逻辑冲突,修改后代码如下:
# 用Column固定Tree的横向宽度 tree_container = sg.Column( [[sg.Tree(treedata, headings=[], key='-TREE1-')]], size=(220, None), # 按需求调整Tree的固定宽度 expand_x=False, expand_y=True ) defect_col = [[ tree_container, sg.Table(values=ls_files, headings=header_list, key='-TABLE1-', expand_x=True, expand_y=True) ]] window = sg.Window('SimpleWindow', defect_col, finalize=True, resizable=True)
- 方案2:手动指定Tree的固定尺寸,无需额外容器
直接给Tree设置固定的size参数锁定宽度,仅开启纵向扩展即可:
defect_col = [[ sg.Tree(treedata, headings=[], key='-TREE1-', size=(35, 20), expand_y=True), # size参数第一个值为宽度,第二个为高度,按需调整 sg.Table(values=ls_files, headings=header_list, key='-TABLE1-', expand_x=True, expand_y=True) ]] window = sg.Window('SimpleWindow', defect_col, finalize=True, resizable=True)
两种方案运行后,窗口拉伸时Tree都会保持固定宽度,Table自动占满剩余横向空间,二者同步纵向填充窗口高度,符合预期布局效果。
内容的提问来源于stack exchange,提问作者iTech
相关产品推荐
相关产品推荐

