python - 使用清除按钮清除破折号中下拉菜单的值时出错
问题描述
我正在尝试向用户提供一个选项,以通过清除按钮清除下拉列表中输入的值,但在运行应用程序时,我收到以下错误(因此我无法在下拉列表中选择选项) :
无法读取 null 的属性“长度”
这是我清除按钮的代码:
html.Button('Clear', id = 'clear', n_clicks = 0, style={'color' : '#FFFFFF', 'fontSize' : '12px', 'width': '150px'})
这是我的清除功能代码:
@app.callback(
Output('Month', 'options'),
[Input('clear', 'n_clicks')]
)
def clearDropDown1(n_clicks):
if n_clicks:
return None
解决方案
谢谢。我已经在本地运行它,问题是由回调引起的。它将options
道具更新为None
,并且应用程序无法读取该属性length
(null
在 JS 中)。
您的回调可以采用这样的形式(对我有用):
@app.callback(
Output('Month', 'options'),
[Input('clear', 'n_clicks')]
)
def clearDropDown1(n_clicks):
if n_clicks:
return []
return [{'label': 'January', 'value': 1}, {'label': 'February', 'value': 2},
{'label': 'March', 'value': 3}, ]
问题是,当您单击按钮时,回调中将不再有任何选项。你知道有一个clearable
道具可以让用户 X 出他们所做的选择吗?
编辑:
为了回应您的评论,您将需要一个多输出回调。它将采用这种形式:
@app.callback(
[
Output('Month', 'options'),
Output('Year', 'options'),
...
],
[Input('clear', 'n_clicks')]
)
def clearDropDown1(n_clicks):
if n_clicks:
return [], [], ...
return [{'label': 'January', 'value': 1}, {'label': 'February', 'value': 2},
{'label': 'March', 'value': 3}, ],
[{'label': 2020, 'value': 2020}, {'label': 2019, 'value': 2019}], ...
Output
该函数必须为装饰器中的每个返回一个值。value
如果你想让它像清除按钮一样工作,你可能需要更新道具而不是选项。
推荐阅读
- android-camera - 如何使用相机意图获取全尺寸图片?
- caching - Next.js 正在缓存我的服务器端页面。如何禁用它?
- python - 可以用软件模拟网卡吗?
- python - 无法找到如何在 Visual Studio 2019 中安装 pandas 库
- position - 让页脚贴在屏幕底部
- java - 从火力基地检索信息
- java - sql, javax.persistence.criteria:检查一个用逗号分隔的字符串值与字符串列表的数据库表列
- go - 如何在 go-swagger 中使用代码 401 或 404 而不是 500 响应无效的不记名令牌
- arrays - 在 nlog(n) 时间内对整数数组进行排序而不使用比较运算符
- c# - 从服务器加载文件