【问题标题】:Python Dash DropdownPython Dash 下拉菜单
【发布时间】:2021-01-18 20:00:02
【问题描述】:

有六个问题要问用户。如果用户回答了这些问题,我正在尝试制作一个应用程序,该应用程序将确定正确使用哪个研究设计的结果。我正在用 python dash 做这个应用程序。我的 Python 代码如下。如何根据用户回答问题后给出的答案,编写出能带来研究设计结果的python代码?为此,我应该如何在破折号程序中编写回调代码?非常感谢您。

import dash
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

from sympy import *

az = ""
bz = ""
app = dash.Dash(external_stylesheets=[dbc.themes.FLATLY])

app.config.suppress_callback_exceptions = True
logo = "analiz.png"

title = dcc.Link(id='ustbaslik',
                 href="/",
                 className="navbar-brand",
                 style={"margin-top": "12px"})

acıklama = [
    dbc.CardHeader(id='acik'),
    dbc.CardBody([
        html.H5(id='ortabaslik', className="card-title"),
        html.P(id='ortamesaj', className="card-text text-justify",),
    ]),
]

sonuc = [
    dbc.CardHeader(id='sonuc'),
    dbc.CardBody([
        html.P(id='mesaj', className="card-text text-justify",),
    ]),
]

app.layout = html.Div([
    html.Nav([
        dbc.Container([
            dbc.Row([
                dbc.Col(title, align="left",width="auto"),
                dbc.Col("", align="left",width="%100"),
                ],
                justify="between",
                align="center",
            ),
            dbc.Row([
                dbc.Col(
                    html.Div([
                        html.Button('Türkçe', id='btn-nclicks-1'),
                        html.Button('İngilizce', id='btn-nclicks-2'),
                    ]) 
                ),
                ],
                justify="between",
                align="center",
            )
        ])
        ],
        className="navbar navbar-dark bg-dark navbar-expand-md bg-light sticky-top",
    ),

    dbc.Container(
        dbc.Row([
            dbc.Col(dbc.Card(acıklama, color="primary", inverse=True)),
            dbc.Col(
                html.Div(children=[
                    html.Label('Araştırmadaki Değişken Türünü Giriniz:'),
                    dcc.Dropdown(
                        options=[
                            {'label': 'Nitel', 'value': 'nitel'},
                            {'label': 'Nicel', 'value': 'nicel'}
                        ],
                        value='tur'
                    ),
                    html.Hr(),
                    html.Label('Girişim var mı'),
                    dcc.Dropdown(
                        options=[
                            {'label': 'Evet', 'value': 'evet'},
                            {'label': 'Hayır', 'value': 'hayır'}
                        ],
                        value='gir'
                    ),
                    html.Hr(),
                    html.Label('Hipotez var mı:'),
                    dcc.Dropdown(
                        options=[
                            {'label': 'Evet', 'value': 'evet'},
                            {'label': 'Hayır', 'value': 'hayır'}
                        ],
                        value='hip'
                    ),
                    html.Hr(),
                    html.Label('Hasta sayısı:'),
                    dcc.Dropdown(
                        options=[
                            {'label': 'Bir hasta', 'value': 'bir'},
                            {'label': 'Birden fazla hasta', 'value': 'birden'},
                            {'label': 'Bir grup hasta', 'value': 'grup'}
                        ],
                        value='has'
                    ),
                    html.Hr(),
                    html.Label('Araştırma sorusunun yönü:'),
                    dcc.Dropdown(
                        options=[
                            {'label': 'Yok', 'value': 'yok'},
                            {'label': 'Geriye', 'value': 'geri'},
                            {'label': 'İleriye', 'value': 'ileri'}
                        ],
                        value='yon'
                    ),
                    html.Hr(),
                    html.Label('Araştırmadan elde edilen ölçüt:'),
                    dcc.Dropdown(
                        options=[
                            {'label': 'Prevelans Hızı', 'value': 'pre'},
                            {'label': 'Olasılık Oranı', 'value': 'ola'},
                            {'label': 'İnsidans Hızı', 'value': 'hız'}
                        ],
                        value='eld'
                    ),
                ])
                ),
                dbc.Col(dbc.Card(sonuc, color="primary", inverse=True)
            )],
            style={"margin-top": "50px"},
        ),
    ),
    html.Hr(),
    dcc.Location(id='url', refresh=False),
    html.Div(id='page-content'),
])

@app.callback([
    Output('ustbaslik', 'children'),
    Output('ortabaslik', 'children'),
    Output('ortamesaj', 'children'),
    Output('acik', 'children'),
    Output('sonuc', 'children')
],
[
    Input('btn-nclicks-1', 'n_clicks'),
    Input('btn-nclicks-2', 'n_clicks')
])

def displayClick(btn1, btn2):
    changed_id = [p['prop_id'] for p in dash.callback_context.triggered][0]
    if 'btn-nclicks-1' in changed_id:
        ustbaslik = 'EPİDEMİYOLOJİK DENEY TASARIMLARI'
        ortabaslik = 'Epidemiyolojik Deney Tasarımları'
        ortamesaj = 'Epidemiyolojik araştırmalar, hastalıkların ...'
        acik = 'Açıklama'
        sonuc = 'Araştırma Tasarımınız ...'
    elif 'btn-nclicks-2' in changed_id:
        ustbaslik = 'EPIDEMIOLOGICAL EXPERIMENT DESIGN'
        ortabaslik = 'Theoretical Probability Distributions Software'
        ortamesaj = 'Epidemiological research, diseases and ...' 
        acik = 'Explanation'
        sonuc ='Your Research Design ...'
    else:
        ustbaslik = 'EPİDEMİYOLOJİK DENEY TASARIMLARI'
        ortabaslik = 'Epidemiyolojik Deney Tasarımları'
        ortamesaj = 'Epidemiyolojik araştırmalar, hastalıkların ...'
        acik = 'Açıklama'
        sonuc = 'Araştırma Tasarımınız ...'
    return ustbaslik,ortabaslik,ortamesaj,acik,sonuc

if __name__ == '__main__':
    app.run_server(debug=True)

【问题讨论】:

    标签: python plotly-dash


    【解决方案1】:

    您需要进行一些更改。首先你需要给你的下拉菜单一个 id:

    dcc.Dropdown(id='dropdown1',
                options=[{'label': 'Nitel', 'value': 'nitel'},
                         {'label': 'Nicel', 'value': 'nicel'}],
                value='tur'),
    

    我给它的 id 是 'dropdown1'

    我还为输出添加了一个容器,只是为了显示回调工作:

    html.Div(id='dd-output-container'),
    

    那么回调很简单:

    @app.callback(
        Output('dd-output-container', 'children'),
        [Input('dropdown1', 'value')],
        )
    def dropdown1_callback(v):
        return v
    

    希望这会有所帮助。更多帮助可以找到here

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2020-10-01
      • 1970-01-01
      相关资源
      最近更新 更多