有什么方法可以在 PySimpleGui spinboxes 中界定整数输入范围的最小值和最大值,以便最小值不会超过最大值?

Is there any way to delimit minimum and maximum of an integer input range in PySimpleGui spinboxes, so that minimum doesn't surpases maximum?

我的 objective 是使用旋转框在 PySimpleGui 的 window 中输入最小值和最大值。 但是这个想法也是根据彼此限制spinboxes的范围,使得最小值不超过最大值;前任。如果我在上部旋转框(最小值)中输入 50,则下部旋转框(最大值)不能取低于 50 的数字,或者反过来,如果我在下部旋转框(最大值)中输入 60,则上部(最小值)应该只接受低于 60 的数字。

到目前为止,我已经为两个旋转框的代码完成了此操作(setValues 是一个包含先前在代码中定义的整数的集合)。

minValues = int(min(setValues))
maxValues = int(max(setValues))
print(minValues, maxValues)

layout = [[sg.Spin([i for i in range(minValues,maxValues+1)], initial_value=minValues), sg.Text('Minimum value')],
        [sg.Spin([i for i in range(minValues,maxValues+1)], initial_value=maxValues), sg.Text('Maximum value')],
        [sg.Submit(), sg.Cancel()]]
window = sg.Window('Window Title', layout)

虽然我希望在 PySimpleGui 中找到解决方案,但也欢迎在其他 GUI 库中提供建议的答案。

当此 sg.Spin.

事件发生时,更新另一个 sg.Spin 的选项 values

演示代码如下,

import PySimpleGUI as sg

sg.theme("DarkBlue")
sg.set_options(font=("Courier New", 16))

minValue = 5
maxValue = 20

layout = [
    [sg.Spin([i for i in range(minValue, maxValue)],     initial_value=minValue, size=(2, 1), enable_events=True, key='-MIN-'), sg.Text('Minimum value')],
    [sg.Spin([i for i in range(minValue+1, maxValue+1)], initial_value=maxValue, size=(2, 1), enable_events=True, key='-MAX-'), sg.Text('Maximum value')],
    [sg.Submit(), sg.Cancel()],
]

window = sg.Window('Title', layout, finalize=True)

value_min, value_max = minValue, maxValue

while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event == '-MAX-':
        value_max = values[event]
        window['-MIN-'].update(values=[i for i in range(minValue, value_max)])
    elif event == '-MIN-':
        value_min = values[event]
        window['-MAX-'].update(values=[i for i in range(value_min+1, maxValue+1)])
    print(event, values)

window.close()