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

Leo*_*ery 5 widget ipython ipython-notebook

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

我的标签超过了“固定最小宽度”。我想知道的是如何更改它。我在Widget源代码中四处寻找,但在任何地方都找不到。

编辑:响应@Jakob,这是一些代码,这是屏幕截图这是截图

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

Ben*_*son 5

要从笔记本中更改样式:

from IPython.display import HTML, display

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


Leo*_*ery 1

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

.widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top}
Run Code Online (Sandbox Code Playgroud)

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

尽管可以覆盖整个文档的此设置,但我没有看到一种简单的方法可以一次更改一个小部件。它必须在 JavaScript 端完成,因为该类FloatTextWidget无法从 python 端单独访问 Widget 的标签组件。这需要开发一个从 继承的自定义小部件FloatTextWidget,对于这样一个简单的问题来说,这似乎需要付出太多的努力,而且启动起来很脆弱。至少,这是我认为做到这一点的唯一方法——欢迎更正。

相反,我决定完全避开小部件及其描述的自动标签,而是将每个标签构造为HTMLWidget,这使我可以完全控制其外观。看起来是这样的:截屏