ipywidgets Textarea height='auto' 不起作用

ipywidgets Textarea height='auto' does not work

我正在使用 ipywidgets 创建一个带有 voila 的仪表板

我有一个文本区域如下:

comm_text = widgets.Textarea(value='',
                            placeholder='OK',
                            description='',
                            style=style,
                            layout=widgets.Layout(height="auto", width="auto"))

我用 height="auto" 假设的是,当在 textarea 中输入行时,文本框会相应地垂直扩展。 (我想让所有的文字都可见)

实际上并没有发生。 正如您在屏幕截图中看到的,我引入了 8 行,但文本区域并没有随之扩展。

这可能吗? 如果不是,实际上 height="auto" 代表什么?

参数height='auto'设置widget的CSS为'auto'。但它对文本区域没有影响,因为行数是硬编码的。 Jason Grout 在 Github post.

中谈到了这一点

如果你想要一个不断增长的文本区域,你可以使用这个解决方法:

def get_bigger(args):        
    comm_text.rows = comm_text.value.count('\n') + 1

comm_text = Textarea(value='',
                            placeholder='OK',
                            description='',
                            rows=1,                            
                            layout=Layout(width="auto"))
comm_text.observe(get_bigger, 'value')
comm_text

免责声明:我不知道这个行为是否有用。您将放弃控制文本区域的大小。

如果你改变

layout=widgets.Layout(height="auto", width="auto")

layout=widgets.Layout(height="100%", width="auto")

它将调整大小以显示它value(文本区域的默认值)上的所有文本。

但是它不会随着您的键入而增长。我不记得在网页上有任何文本区域这样做。

还有一件事。如果您正在使用网格,使用 height="auto" 并调整文本区域的大小(拖动角),它将调整网格的其他相关元素的大小。

如果你使用 height="100%"

就不会发生这种情况