如何解决ipywidgets 小工具 - 日期选择器 - Mozilla Firefox 的问题
当我使用 Firefox 并单击日期选择器旁边的 x 时,我收到以下错误消息:
Chrome 不会发生这种情况,通过阅读 Web 官方网页,它应该也适用于 Firefox,您能帮忙吗?
这里是代码:
from ipywidgets import DatePicker,FloatText,HBox,interactive_output,Text
import datetime
from dateutil.relativedelta import relativedelta
ddecW = DatePicker(value=datetime.date.today() + relativedelta(months=2,day=1))
dobW = DatePicker(value=datetime.date.today() + relativedelta(years=-18))
etaW = FloatText(description='Età')
ui = HBox([ddecW,dobW,etaW])
def f(end,start,age):
etaW.value = round((end - start).days/365.25,1)
out = interactive_output(f,{'end': ddecW,'start': dobW,'age': etaW})
display(ui,out)
解决方法
该函数正在尝试计算 date
和 None
之间的差异,因此出现错误消息。在这种情况下,您的输出小部件应该显示什么? 0?
另外,因为您在 etaW
调用中包含了 interactive_output
小部件,所以当您设置 eta.value
时,这将再次触发 f
,从而导致递归循环。更好的方法是下面的方法,或者我会避免使用 interactive_output
,而只使用 observe
函数。
from ipywidgets import DatePicker,FloatText,HBox,interactive_output,Text
import datetime
from dateutil.relativedelta import relativedelta
import numpy as np
ddecW = DatePicker(value=datetime.date.today() + relativedelta(months=2,day=1))
dobW = DatePicker(value=datetime.date.today() + relativedelta(years=-18))
etaW = FloatText(description='Età')
ui = HBox([ddecW,dobW])
def f(end,start):
val = round((end - start).days/365.25,1)
print(f'Delta is {val}')
out = interactive_output(f,{'end': ddecW,'start': dobW,})
display(ui,out)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。