【发布时间】:2021-03-30 16:02:31
【问题描述】:
我正在使用 python Dash 开发一个多页仪表板。在主页上,我创建了一个带有“提交”按钮的布局。因此,当用户选择选项并单击“提交”按钮时,它应该调用另一个 .py 脚本并在同一页面上显示该脚本。
Index.py 是主程序 Layout.py 有布局 new1.py 具有“提交按钮”的布局 new2.py 是点击提交按钮时需要显示的脚本
这是我在 new1.py 中声明按钮的代码
html.Button('Clear',id='clear_button', n_clicks=0, style = { 'width' : '30%', 'margin-top': '15vw', "margin":"15px" ,'border-radius': '8px'}),
具有按钮回调的Index.py
@app.callback(
dash.dependencies.Output('apply_button', 'children'),
[dash.dependencies.Input('button', 'n_clicks')])
def run_script_onClick(n_clicks):
if not n_clicks:
raise PreventUpdate
script_path = 'python new2.py'
call(["python3", script_path])
return output_content
这是正确的吗?当我单击“应用”按钮时,什么也没有出现。我希望 new2.py 的输出显示在同一屏幕上。另外我应该在哪里给出回电声明。在 Index.py 还是在 new1.py 中?有人可以帮忙吗?
谢谢, 普拉塔普
【问题讨论】:
-
您使用了
output_content,但您从未创建它 - 所以您应该收到错误消息。也许你需要像output_content = call(...)这样的东西,但也许最好是import来自new2.py的代码并像普通代码一样执行它——但它需要保持new2.py中的代码正常运行 -
也许 yoi 应该首先使用
print()来查看函数是否被执行以及你在变量中得到了什么。它被称为"print debuging"。 -
如果你使用
script_path = 'python new2.py',那么最后你运行代码call(["python3", "python new2.py"])这是完全错误的。
标签: python html plotly-dash