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%"
就不会发生这种情况
我正在使用 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%"