File size: 2,242 Bytes
1e054bd b28a0c6 1e054bd 56f97d6 1e054bd f670049 1e054bd 56f97d6 f670049 1e054bd f670049 1e054bd f670049 56f97d6 f670049 4671427 b28a0c6 6cbf624 4671427 b28a0c6 35d044c f670049 1e054bd 56f97d6 f670049 267e844 56f97d6 1e054bd f670049 35d044c f670049 b28a0c6 f670049 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
import streamlit as st
# TODO: rename everything
def select_int_interval(param_name, limits_list, defaults, **kwargs):
st.sidebar.subheader(param_name)
min_max_interval = st.sidebar.slider(
"", limits_list[0], limits_list[1], defaults, key=hash(param_name)
)
return min_max_interval
def select_several_ints(
param_name, subparam_names, limits_list, defaults_list, **kwargs
):
st.sidebar.subheader(param_name)
result = []
assert len(limits_list) == len(defaults_list)
assert len(subparam_names) == len(defaults_list)
for name, limits, defaults in zip(subparam_names, limits_list, defaults_list):
result.append(
st.sidebar.slider(
name, limits[0], limits[1], defaults, key=hash(param_name + name)
)
)
return tuple(result)
def select_min_max(param_name, limits_list, defaults_list, min_diff=0, **kwargs):
assert len(param_name) == 2
result = list(
select_int_interval(" & ".join(param_name), limits_list, defaults_list)
)
if result[1] - result[0] < min_diff:
diff = min_diff - result[1] + result[0]
if result[1] + diff <= limits_list[1]:
result[1] = result[1] + diff
elif result[0] - diff >= limits_list[0]:
result[0] = result[0] - diff
else:
result = limits_list
return tuple(result)
def select_RGB(param_name, **kwargs):
result = select_several_ints(
param_name,
subparam_names=["Red", "Green", "Blue"],
limits_list=[[0, 255], [0, 255], [0, 255]],
defaults_list=[0, 0, 0],
)
return tuple(result)
def select_radio(param_name, options_list, **kwargs):
st.sidebar.subheader(param_name)
result = st.sidebar.radio("", options_list)
return result
def select_checkbox(param_name, defaults, **kwargs):
st.sidebar.subheader(param_name)
result = st.sidebar.checkbox("True", defaults)
return result
# dict from param name to function showing this param
param2func = {
"int_interval": select_int_interval,
"several_ints": select_several_ints,
"radio": select_radio,
"rgb": select_RGB,
"checkbox": select_checkbox,
"min_max": select_min_max,
}
|