I am working on a shiny for python app that uses ui.input_selectize. However, I hit issues when I started to use that in combination with shinywidgets.
If the both the input_selectize and the widget are in the code, the widget will not show the graph and the selectize input will display in a different format than normal (identical to how input_select looks). Here is reproducible code of this as well as what it looks like in the app. I am using shiny 0.6.0, plotly 5.18.0, and shinywidgets 0.2.2
from shiny import ui, App,render from shinywidgets import output_widget, render_widget import plotly.express as px df = px.data.tips() app_ui = ui.page_fluid( ui.output_ui("PN_Selection"), ui.div( ui.input_select( "x", label="Variable", choices=["total_bill", "tip", "size"] ), ui.input_select( "color", label="Color", choices=["smoker", "sex", "day", "time"] ), class_="d-flex gap-3" ), output_widget("my_widget") ) def server(input, output, session): @output @render_widget def my_widget(): fig = px.histogram( df, x=input.x(), color=input.color(), marginal="rug" ) fig.layout.height = 275 return fig @output @render.ui def PN_Selection(): pn_pick=["test","test2","test3"] return(ui.TagList( ui.input_selectize("PN_Select",label="Select Part Series",choices=dict(zip(pn_pick,pn_pick)),selected="test",multiple=True) )) app = App(app_ui, server)
If I comment out "output_widget(my_widget)" the selectize input starts to display correctly, but of course I now have no graph.
It also works if you move the input_selectize out of the render.ui and into the main ui section, but unfortunately in my real app, the select input fields are dynamic and need to be part of a render.ui rather than hardcoded in the ui section.
If I change ui.input_selectize to ui.input_select, both the graph and input display ok, so this is my current way around this, however, I prefer the way the selectize input looks for selecting multiple items so I would prefer to use that.
Any idea why selectize input and shinywidget don't seem to mesh well together in this context? Thanks!