python PySimpleGUI.如何在sg.列中进行滚动?

bkhjykvo  于 2022-12-17  发布在  Python
关注(0)|答案(1)|浏览(274)

我有一个sg.Column,它启用了选项“scrollable”和“vertical_scroll_only”。我使用extend_layout向它添加新的元素。当有很多元素时,滚动是不激活的。
我使用了这篇文章-How to add a field or element by clicking a button in PySimpleGUI?
我该怎么修呢?

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))
        row_amt += 1
l0oc07j2

l0oc07j21#

如果一个可滚动的列的内容改变了,你可以调用column.contents_changed方法。记住在调用window.refresh()之前先调用它。
当可滚动列通过使元素可见或不可见而更改了其部分布局时,或者扩展了列的布局时,则需要调用此方法,以便计算新的滚动区以匹配新内容。

相关问题