File size: 1,717 Bytes
87fe461
 
 
bcb8af1
87fe461
bcb8af1
87fe461
 
bcb8af1
87fe461
 
 
 
 
 
 
bcb8af1
 
 
 
 
 
 
 
87fe461
 
 
bcb8af1
 
 
ab818d6
 
 
 
 
 
 
 
bcb8af1
 
 
ab818d6
87fe461
 
 
 
bcb8af1
ab818d6
 
bcb8af1
87fe461
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
import streamlit as st


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_several_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)
    if isinstance(options_list[0],str):
        result = '"' + result + '"'
    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_several_RGB,
    'checkbox': select_checkbox

}