from shiny import reactive
from shiny.express import input, ui, render
from shinywidgets import render_widget, reactive_read
from ipymolstar import PDBeMolstar
ui.input_text("molecule_id", "Molecule id", "1qyn")
@render_widget
def molstar():
view = PDBeMolstar(molecule_id='1qyn')
return view
@reactive.effect
def _():
molecule_id = input.molecule_id()
# check for valid pdb id
if len(molecule_id) == 4:
molstar.widget.molecule_id = input.molecule_id()
@render.text
def center():
event = reactive_read(molstar.widget, 'mouseover_event')
return f"Mouseover event: {event}"