neo*_*lly 5 javascript python datepicker jupyter-notebook ipywidgets
我ipywidgets在 Jupyter Notebook 中使用,特别是 DatePicker 小部件,我想知道是否有办法深入了解小部件的内部结构以改变其外观。例如,DatePicker 小部件包装在一个看起来宽 300 像素、高 28 像素的盒子中(通过在显示的 DatePicker 小部件上使用 Firefox 中的“检查元素”确定)。我想要能够控制这个盒子的属性。这种风格是在哪里确定的?
互联网搜索始终指向此页面,但那里包含的信息似乎很笼统,我似乎无法找到我想要的特定类型的信息。
同样(至少我发现)查看位于 lib/python3.6/site-packages/ipywidgets/widgets/widgets_date.py 的源代码并不是很有启发性。
我已经尝试了我认为可能是显而易见的事情:
from ipywidgets import widgets
dp = widgets.DatePicker()
display(dp)
#Now try to set border style to red, for example.
dp.layout.border = 'solid 1px #ff0000'
display(dp)
#No change. :( Or rather, I should say, this adds yet another border,
#but leaves the original unchanged.
Run Code Online (Sandbox Code Playgroud)
有没有人有过了解这种显示样式在哪里设置或如何自定义它的经验?
更新:我按照此页面上的指南设置了一个自定义日期选择器小部件(见下文,我将框变大一点,并将背景涂成红色,只是因为),我想现在 DatePicker 小部件的属性是在Javscript某个地方被某些人设置。我仍然想知道是否可以修改这些属性而不必重新发明轮子。该ipywidgetsDatePicker的小工具已经存在,它似乎是一个浪费我自己写的,只是因为我想自定义它的外观。
from __future__ import print_function
import ipywidgets as widgets
from traitlets import Unicode, validate
class DateWidget(widgets.DOMWidget):
_view_name = Unicode('DatePickerView').tag(sync=True)
_view_module = Unicode('datepicker').tag(sync=True)
value = Unicode().tag(sync=True)
%%javascript
requirejs.undef('datepicker');
define('datepicker',["jupyter-js-widgets"],function(widgets){
var DatePickerView = widgets.DOMWidgetView.extend({
render:function(){
this.date = document.createElement('input');
this.date.setAttribute('type','date');
this.date.style.width = '350px';
this.date.style.height = '45px';
this.date.backgroundColor = '#ff0000';
this.el.appendChild(this.date);
this.update();
},
update:function(){
this.date.value = this.model.get('value');
return DatePickerView.__super__.update.apply(this);
},
events:{
"change":"handle_date_change"
},
handle_date_change:function(event){
this.model.set('value',this.date.value);
this.touch();
},
});
return{
DatePickerView:DatePickerView
};
});
dp=DateWidget()
dp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1652 次 |
| 最近记录: |