我有一个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
1条答案
按热度按时间l0oc07j21#
如果一个可滚动的列的内容改变了,你可以调用
column.contents_changed
方法。记住在调用window.refresh()
之前先调用它。当可滚动列通过使元素可见或不可见而更改了其部分布局时,或者扩展了列的布局时,则需要调用此方法,以便计算新的滚动区以匹配新内容。