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

PySimpleGUI中sg.Column滚动失效求助:添加元素后滚动未激活

修复PySimpleGUI中Column扩展后滚动不激活的问题

问题根源是使用extend_layout添加元素后,Column组件不会自动检测内部内容的尺寸变化,导致滚动条无法触发。只需在每次添加元素后调用Column的contents_changed()方法,强制它重新计算内容尺寸,就能激活滚动功能。

修改后的完整代码:

import PySimpleGUI as sg

new_layout = [[sg.T(f'Row 1'), sg.B(' + ', key='-ADD-')]]

layout = [[sg.T('Example Text')],
        [sg.Column(new_layout, key='-Column-', size=(100, 200),
        scrollable=True, vertical_scroll_only=True)]]

window = sg.Window('For Example', layout)

def new_row(row_amt):
    return [[sg.T(f'Row {row_amt}')]]

row_amt = 2
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, None):
        break
    elif event == '-ADD-':
        window.extend_layout(window['-Column-'], new_row(row_amt))
        # 触发Column重新计算内容尺寸,激活滚动条
        window['-Column-'].contents_changed()
        row_amt += 1

补充说明

extend_layout仅负责向Column中插入新元素,但不会主动更新Column的内部尺寸缓存。调用contents_changed()后,Column会重新测量所有子元素的总高度,当总高度超过你设置的Columnsize参数中的高度值时,滚动条就会自动激活并正常工作。

内容的提问来源于stack exchange,提问作者antjuice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:02:06