这真是一个微不足道的问题,但它仍然很烦人。我正在编写一个工具,允许用户在IPython笔记本中为分析设置一组数字参数。我在FloatTextWidget
中将其设置为一堆ContainerWidget
个。它们有相当长的标签,如“姿势点数”或“背景磁盘半径”。他们排队不好。这是因为长度:如this page所述,“小部件的标签具有固定的最小宽度。标签的文本始终右对齐,小部件左对齐...如果标签是长度小于最小宽度,小部件向右移动。“
我的标签超出“固定的最小宽度”。我想知道的是如何改变它。我在Widget源代码中搜索过,我无法在任何地方找到它。
编辑:回复@Jakob,here is some code,此处是截屏
在此示例中,“阈值:”小到足以适合标签宽度,但所有其他都太长。
答案 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
,这使我可以完全控制其外观。这是什么样的:
答案 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()])