Recently, I am looking into Python framework call Reflex for building web apps.
What I want to achieve:
When I select different code names in radio box, the code block to the right display corresponding codes. I have a dict store code names as key and code example as value.
sample_codes : dict={'Python':'python code example', 'Java':'Java code example'}
The problem:
When I click on different radio box, on_change=RadioState.set_name
seems to work properly. However, the example code in code block is not updating...
In state.py
class RadioState(rx.State):
sample_codes :dict={ 'Python':'python code example','Java':'Java code example'}
name:str="Python"
code:str=sample_code["python"]
@rx.var
def change_code(self):
self.code= self.sample_code[self.name]
In index.py
code_names=['Python','Java']
def display_code_block():
return rx.hstack(
rx.vstack
(
rx.text("Here are some code examples for you to start with",style=_description_style),
rx.radio(code_names,
variant='soft',
color_scheme='grass',
spacing='2',
size='1',
on_change=RadioState.set_name,
justify_content="right",
width='100%',
),
),
rx.box(
rx.code_block(
RadioState.code,
language="python",
theme="vs-dark",
show_line_numbers=True,
can_copy=True),
# align_items="center",
justify_content="center",
width="100%",
height='50vh'
)
# width="100%",
)