[英]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.