簡體   English   中英

有沒有辦法在 PySimpleGui spinboxes 中限定 integer 輸入范圍的最小值和最大值,以便最小值不會超過最大值?

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

我的目標是使用旋轉框在 PySimpleGui 的 window 中輸入最小值和最大值。 但想法也是根據彼此限制旋轉框的范圍,使最小值不超過最大值; 前任。 如果我在上旋轉框中輸入 50(最小),下旋轉框(最大)不應該能夠取低於 50 的數字,或者同樣反過來,如果我在下旋轉框(最大)中輸入 60,則上旋轉框( minimum) 應該只接受低於 60 的數字。

到目前為止,我已經為兩個 spinboxes 的代碼完成了此操作(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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM