PySimpleGUI显示列元素窗口扩展 隐藏行元素时不收缩如何解决
PySimpleGUI隐藏元素后窗口不自动收缩的解决方法
问题本质
PySimpleGUI默认渲染逻辑只会在元素变为可见、内容超出当前窗口尺寸时自动扩大窗口,不会在元素隐藏时主动缩小窗口,该行为属于框架默认特性,需要手动调用接口触发窗口重排。
修复步骤
- 确认创建
Window对象时没有传入固定的size参数,保持窗口尺寸自适应状态,若写死了固定宽高,窗口会被锁定无法自动调整大小。 - 在隐藏列元素的逻辑后,先刷新界面元素状态,再调用窗口自适应方法即可实现自动收缩。
修改后的核心代码如下:
if event == '-AddRow-': NumberOfRows += 1 window['-Column' + str(NumberOfRows) + '-'].update(visible=True) # 新增行时框架默认会自动扩窗,无需额外处理 if event == '-SubtractRow-': NumberOfRows -= 1 window['-Column' + str(NumberOfRows) + '-'].update(visible=False) # 新增以下两行实现隐藏行后窗口自动收缩 window.refresh() window.autosize_window()
兼容说明
如果你使用的是较旧版本的PySimpleGUI,autosize_window()方法不生效时,可以替换为window.fit_to_window(),效果一致。
内容的提问来源于stack exchange,提问作者Ty W.
相关产品推荐
相关产品推荐

