Python破折号下拉列表

2024-09-27 00:13:47 发布

您现在位置:Python中文网/ 问答频道 /正文

有六个问题要问用户。如果用户回答了这些问题,我将尝试制作一个应用程序,它将决定在右侧使用哪个研究设计的结果。我正在用python dash做这个应用程序。我的Python代码如下所示。如何编写python代码,根据用户回答问题后给出的答案得出研究设计的结果?我应该如何在dash程序中为此编写回调代码?事先非常感谢你

Application screenshot in Turkish

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)

Tags: importidoutputvaluehtmlcollabeldbc
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:47

你需要做一些改变。首先,您需要为下拉列表提供一个id:

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

我给了它一个“dropdown1”的id

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

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

那么回调就是:

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

希望这有帮助。更多帮助可以在here中找到

相关问题 更多 >

    热门问题