@@ -51,15 +51,18 @@ def make_model():
51
51
set_current_step (0 )
52
52
return model
53
53
54
- model = solara .use_memo (make_model , dependencies = list (model_parameters .values ()))
54
+ reset_counter = solara .use_reactive (0 )
55
+ model = solara .use_memo (
56
+ make_model , dependencies = [* list (model_parameters .values ()), reset_counter .value ]
57
+ )
55
58
56
59
def handle_change_model_params (name : str , value : any ):
57
60
set_model_parameters ({** model_parameters , name : value })
58
61
59
62
# 3. Set up UI
60
63
solara .Markdown (name )
61
64
UserInputs (user_params , on_change = handle_change_model_params )
62
- ModelController (model , play_interval , current_step , set_current_step )
65
+ ModelController (model , play_interval , current_step , set_current_step , reset_counter )
63
66
64
67
with solara .GridFixed (columns = 2 ):
65
68
# 4. Space
@@ -81,7 +84,9 @@ def handle_change_model_params(name: str, value: any):
81
84
82
85
83
86
@solara .component
84
- def ModelController (model , play_interval , current_step , set_current_step ):
87
+ def ModelController (
88
+ model , play_interval , current_step , set_current_step , reset_counter
89
+ ):
85
90
playing = solara .use_reactive (False )
86
91
thread = solara .use_reactive (None )
87
92
@@ -112,6 +117,9 @@ def do_pause():
112
117
model .running = False
113
118
thread .join ()
114
119
120
+ def do_reset ():
121
+ reset_counter .value += 1
122
+
115
123
with solara .Row ():
116
124
solara .Button (label = "Step" , color = "primary" , on_click = do_step )
117
125
# This style is necessary so that the play widget has almost the same
@@ -132,6 +140,7 @@ def do_pause():
132
140
playing = playing .value ,
133
141
on_playing = playing .set ,
134
142
)
143
+ solara .Button (label = "Reset" , color = "primary" , on_click = do_reset )
135
144
solara .Markdown (md_text = f"**Step:** { current_step } " )
136
145
# threaded_do_play is not used for now because it
137
146
# doesn't work in Google colab. We use
0 commit comments