窗口在使列元素可见时重新调整大小,但在隐藏行元素时不重新调整大小



我正在创建一个用于记录时间的程序。在启动时,它显示一行用于输入,并允许用户根据需要添加行。额外的行一开始是隐藏的,当用户点击"+"按钮时显示,此时窗口展开。

还可以使用'-'按钮删除行元素,但是,当这样做时,窗口不会缩小。

我对PySimpleGUI相当陌生,我不确定这将如何实现。以下是用于根据需要添加和删除行的代码:

if event == '-AddRow-':
NumberOfRows += 1
window['-Column' + str(NumberOfRows) + '-'].update(visible=True)

if event == '-SubtractRow-':
NumberOfRows -= 1
window['-Column' + str(NumberOfRows) + '-'].update(visible=False)


程序当前正在做的事情的例子

如果visible=False和容器中没有任何内容,则容器的空间(如row或Column元素)仍然会被占用。在布局中使用辅助函数sg.pin,它将在容器中放置一个小元素。

import PySimpleGUI as sg
layout = [
[sg.Button('+'), sg.Button('-')]] + [
[sg.pin(sg.Input(visible=(i==0), key=('INPUT', i)))] for i in range(10)
]
window = sg.Window('Title', layout)
i = 0   # Maximum index for visible element
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == '+':
i = min(9, i+1)
window[('INPUT', i)].update(visible=True)
elif event == '-':
i = max(0, i-1)
window[('INPUT', i+1)].update(visible=False)
window.close()