更改IPython笔记本小部件中标签的大小

时间:2014-11-24 21:46:34

标签: widget ipython ipython-notebook

这真是一个微不足道的问题,但它仍然很烦人。我正在编写一个工具,允许用户在IPython笔记本中为分析设置一组数字参数。我在FloatTextWidget中将其设置为一堆ContainerWidget个。它们有相当长的标签,如“姿势点数”或“背景磁盘半径”。他们排队不好。这是因为长度:如this page所述,“小部件的标签具有固定的最小宽度。标签的文本始终右对齐,小部件左对齐...如果标签是长度小于最小宽度,小部件向右移动。“

我的标签超出“固定的最小宽度”。我想知道的是如何改变它。我在Widget源代码中搜索过,我无法在任何地方找到它。

编辑:回复@Jakob,here is some code,此处是截屏here is a screenshot

在此示例中,“阈值:”小到足以适合标签宽度,但所有其他都太长。

3 个答案:

答案 0 :(得分:2)

要从笔记本中更改样式:

from IPython.display import HTML, display

display(HTML('''<style>
    .widget-label { min-width: 20ex !important; }
</style>'''))

答案 1 :(得分:0)

好吧,我找到了我的问题的狭隘答案:最小字段宽度在site-packages/IPython/html/static/style/ipython.min.css中定义(位于python库所在的任何位置 - 在我的Max上/Library/Python/2.7/),其中widget-hlabel 1}}由

定义
.widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top}

min-width:10ex是相关部分。

虽然可以覆盖整个文档的这个,但我没有看到一个简单的方法来一次更改一个小部件。它必须在JavaScript方面完成,因为FloatTextWidget类不能从python端单独访问Widget的标签组件。这需要开发一个从FloatTextWidget子类化的自定义窗口小部件,这对于这样一个简单的问题似乎太费力了,并且引导时很脆弱。至少,这是我看到的唯一方式 - 欢迎更正。

相反,我决定完全避免使用描述自动标记小部件,而是将每个标签构造为HTMLWidget,这使我可以完全控制其外观。这是什么样的:screenshot

答案 2 :(得分:0)

对每个小部件使用layout参数。这是文档的链接:https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Styling.html 特别是说,您可以像这样在HBox中分别定义定义说明和小部件:

    from ipywidgets import HBox, Label, Layout
    label_layout = Layout(width='100px',height='30px')
    HBox([Label('A description',layout=label_layout), IntSlider()])