Seite 1 von 1

Call back Button funktioniert nicht

Verfasst: Sonntag 29. Mai 2022, 18:48
von michel777
Hallo,

Die dft-Schleife funktioniert gut, aber der Callback "unterbricht" die Schleife nicht, die einzige debugged-Anweisung ist die def plot_ticker_day(n_clicks):

Idee ?

Der Code ist vereinfacht mit hart kodierten Werten: the_day='2021-10-14' , stocksTicker = 'GRVI'

Code: Alles auswählen

app = dash.Dash(__name__)
dft = pd.read_sql('SELECT * from show_rule1',con=Engine)
for row in dft.itertuples():
    app.layout = html.Div([
        html.H3(row.dayx),
        html.H3(row.Ticker),
        html.Button("Next",id='next_val'),
        dcc.Graph(id='ticker_day')
    ])
    @app.callback(
        Output('ticker_day', 'figure'),
        Input('next_val', 'n_clicks')
    )
    def plot_ticker_day(n_clicks):
        the_day='2021-10-14' 
        stocksTicker = 'GRVI'
        selectString = 'SELECT * FROM  aggregates WHERE Ticker =' +'\''+ stocksTicker +'\'' + ' AND CONVERT(varchar(10), dbo.aggregates.t_datetime, 23) =' +'\''+ the_day +'\''  
        df = pd.read_sql(selectString ,con=Engine)
        trace1 = {
            'x': df.t_datetime,
            'open': df.o,
            'close': df.c,
            'high': df.h,
            'low': df.l,
            'type': 'candlestick',
            'name': stocksTicker,
            'showlegend': True
        }
        fig=go.Figure([trace1])
        return fig
 
if __name__ == '__main__':
    app.run_server(debug=False)


Re: Call back Button funktioniert nicht

Verfasst: Sonntag 29. Mai 2022, 20:04
von __deets__
Das ist ein aus dem Zusammenhang gerissenes Stueck Code, ohne Importe, ohne Erklaerung, was da fuer Frameworks verwandt werden. Dazu kann man nichts sagen.

Re: Call back Button funktioniert nicht

Verfasst: Sonntag 29. Mai 2022, 20:19
von michel777
Vereinfacht, vollständig:

Code: Alles auswählen

import dash
import dash_html_components as html
import dash_core_components as dcc
import dash_bootstrap_components as dbc
from dash.dependencies import Output, Input
from pandas.core.frame import DataFrame
import plotly.graph_objects as go
import pandas as pd
from dash import Dash, dcc, html, Input, Output, State
from sqlalchemy import create_engine
import urllib
data = {'product_name': ['laptop', 'printer', 'tablet', 'desk', 'chair'],
        'price': [1200, 150, 300, 450, 200]
        }
dft = pd.DataFrame(data)
app = dash.Dash(__name__)
for row in dft.itertuples():
    app.layout = html.Div([
        html.H3(row.product_name),
        html.H3(row.price),
        html.Button("Next",id='next_val'),
        dcc.Graph(id='ticker_day')
    ])
    @app.callback(
        Output('ticker_day', 'figure'),
        Input('next_val', 'n_clicks')
    )
    def plot_ticker_day(n_clicks):
        fig = go.Figure(data=[go.Scatter(x=[1, 2, 3], y=[4, 1, 2])])
        return fig
if __name__ == '__main__':
    app.run_server(debug=False)
    

Re: Call back Button funktioniert nicht

Verfasst: Dienstag 14. Juni 2022, 21:29
von FranzB.
Hallo,
falls noch relevant. Hier wird Dash (for plotly) als Front end Framework genutzt. (https://dash.plotly.com/)
Was genau soll jetzt unterbrochen werden? Offensichtlich möchtest du mit dem Button den nächsten Plot anzeigen? Das zumindest lese ich aus dem "Input" im Callback raus. Das würde funktionieren, wenn der Callback nicht in der Schleife implementiert wäre. Den also einmal einen Tab zurück einrücken. Dann reagiert zumindest die Callback Funktion beim Klick des Buttons.

Re: Call back Button funktioniert nicht

Verfasst: Donnerstag 16. Juni 2022, 11:30
von michel777
Hallo Franz,

viele Dank ! Problem wurde behoben.

VG Michel