Spaces:
Running
Running
| import json | |
| import gradio as gr | |
| import modelscope_studio.components.antd as antd | |
| import modelscope_studio.components.base as ms | |
| gutters = {} | |
| vgutters = {} | |
| col_counts = {} | |
| for i, v in enumerate([8, 16, 24, 32, 40, 48]): | |
| gutters[str(i)] = vgutters[str(i)] = v | |
| for i, v in enumerate([2, 3, 4, 6, 8, 12]): | |
| col_counts[str(i)] = v | |
| with gr.Blocks() as demo: | |
| with ms.Application(): | |
| with antd.ConfigProvider(): | |
| ms.Span("Horizontal Gutter (px): ") | |
| with ms.Div(elem_style=dict(width="50%")): | |
| horizontal_slider = antd.Slider( | |
| value=1, | |
| min=0, | |
| max=len(gutters) - 1, | |
| marks=gutters, | |
| step=None, | |
| tooltip=dict( | |
| formatter=f"(value) => ({json.dumps(gutters)}[value])") | |
| ) | |
| ms.Span("Vertical Gutter (px): ") | |
| with ms.Div(elem_style=dict(width="50%")): | |
| vertical_slider = antd.Slider( | |
| value=1, | |
| min=0, | |
| max=len(vgutters) - 1, | |
| marks=vgutters, | |
| step=None, | |
| tooltip=dict( | |
| formatter=f"(value) => ({json.dumps(vgutters)}[value])" | |
| )) | |
| ms.Span("Column Count: ") | |
| with ms.Div(elem_style=dict(width="50%", marginBottom=48)): | |
| count_slider = antd.Slider( | |
| value=1, | |
| min=0, | |
| max=len(col_counts) - 1, | |
| marks=col_counts, | |
| step=None, | |
| tooltip=dict( | |
| formatter= | |
| f"(value) => ({json.dumps(col_counts)}[value])")) | |
| with antd.Row(gutter=[gutters["1"], vgutters["1"]]) as row: | |
| with ms.Each(value=[{ | |
| "span": 8 | |
| }, { | |
| "span": 8 | |
| }, { | |
| "span": 8 | |
| }] * 2) as cols: | |
| with antd.Col(elem_style=dict(background="transparent", | |
| border=0)): | |
| ms.Div("Column", | |
| elem_style=dict(height=120, | |
| fontSize=14, | |
| lineHeight='120px', | |
| background="#0092ff", | |
| borderRadius=4, | |
| color="#fff", | |
| textAlign='center')) | |
| def on_change(_horizontal_slider, _vertical_slider, _count_slider): | |
| return gr.update(gutter=[ | |
| gutters[str(_horizontal_slider)], vgutters[str( | |
| _vertical_slider)] | |
| ]), gr.update( | |
| value=[{ | |
| "span": int(24 / col_counts[str(_count_slider)]) | |
| } for _ in range(col_counts[str(_count_slider)])] * 2) | |
| gr.on([ | |
| horizontal_slider.change, vertical_slider.change, | |
| count_slider.change | |
| ], | |
| fn=on_change, | |
| inputs=[horizontal_slider, vertical_slider, count_slider], | |
| outputs=[row, cols]) | |
| if __name__ == "__main__": | |
| demo.queue().launch() | |