Dash引导组件不改变链接的url



我正在Dash应用程序上工作,并希望包含一个按钮/超链接到本地html文件,但我需要能够根据输入的搜索词更改html文件。下面是我目前拥有的,但我一直得到一个错误说dbc。按钮不支持"n-click"。我也有一个问题,链接立即被打开时,脚本运行。我以前从未使用过Dash Bootstrap组件,所以我不确定我需要做些什么来解决这个问题。

这只是一小段代码,这样它就不会太长

app.layout = html.Div([
html.H1('Gene-NE'),
html.H5('Created by Lauren Kirsch and Dr. Chiquito Crasto'),
html.Label('Search Box'),
dcc.Input(id="search_gene",
type="text",
value='',
placeholder="Type a human gene name",
debounce=True,
minLength=0, maxLength=50,
autoComplete='on',
size='40'),
html.Div([
dcc.Graph(id='mygraph')]),
dcc.RadioItems(
id="vertical_display_toggle",
options=[
{'label': 'Show vertical date bars', 'value': 'show'},
{'label': 'Hide vertical bars', 'value': 'hide'}],
value='hide',  # first loading value selected
labelStyle={'display': 'inline-block'}, inputStyle={"margin-left": "8px", "margin-right": "5px"}),
dcc.RadioItems(
id="synonym_display_toggle",
options=[
{'label': 'Show synonyms', 'value': 'show'},
{'label': 'Hide synonyms', 'value': 'hide'}],
value='hide',  # first loading value selected
labelStyle={'display': 'inline-block'}, inputStyle={"margin-left": "8px", "margin-right": "5px"}),
html.Div([
dbc.Button("Click Here", id="id-button", className="mr-2"),
html.A(dbc.Nav(dbc.NavItem(dbc.NavLink('Click for PubMedIDs', id='outlink', href='/', target="_blank",
className="nav-link"))))
]),
html.Br(),
html.H6('Texas Tech University Center for Biotechnology and Genomics')])

df = pd.read_csv('list_out.txt', sep='t', dtype=str)
df = df.transpose().reset_index().rename(columns={'index': 'Date'})
new_header = df.iloc[0]
df = df[1:]
df.columns = new_header
df = df.iloc[0:600]
df = df.set_index('Date')
df = df.iloc[:, ~df.columns.duplicated()]
lookup_df = pd.read_csv('Gene_Lookup.csv', dtype=str)
link = lookup_df.set_index('Approved_Symbol').Linked_Genes.str.split('|').to_dict()
link_date = lookup_df.set_index('Approved_Symbol').Date_Name_Changed.to_dict()   

@app.callback(
[Output('mygraph', 'figure'),
Output('outlink', 'children')],
[Input('search_gene', 'value'),
Input('vertical_display_toggle', 'value'),
Input('synonym_display_toggle', 'value'),
Input('id-button', 'n-clicks')])
def update_output(search_gene, vertical_display_user_slct, synonym_display_user_slct, clicks):        
if search_gene:
search_gene = search_gene.upper()
syns = link[search_gene]


trace1 = go.Scatter(x=df.index, y=df[search_gene], line_shape='linear', line=dict(color='white'), name=search_gene)

fig = go.Figure()
fig.add_trace(trace1)

if clicks != 0:
return 'f"/assets/{search_gene}.html"'

主要问题是您指定了n-clicks作为输入,而它需要改为n_clicks

所以为了清晰起见,回调应该看起来更像这样:

@app.callback(
[Output("mygraph", "figure"), Output("outlink", "children")],
[
Input("search_gene", "value"),
Input("vertical_display_toggle", "value"),
Input("synonym_display_toggle", "value"),
Input("id-button", "n_clicks"),
],
)
def update_output(
search_gene, vertical_display_user_slct, synonym_display_user_slct, clicks
):
# ...

就链接问题而言,我无法用您共享的内容复制此内容,但在您的回调中,您有此检查:

if clicks != 0:
return 'f"/assets/{search_gene}.html"'

clicks也可以是None,所以要确保正确处理。相反,你可以这样做:

if clicks:
return 'f"/assets/{search_gene}.html"'

这也将处理None

最新更新