我正在使用ipywidget创建一个带有voila的仪表板。
我有一个如下所示的区域:
comm_text = widgets.Textarea(value='',
placeholder='OK',
description='',
style=style,
layout=widgets.Layout(height="auto", width="auto"))
我用height="auto“假装的是,当在textarea中输入行时,文本框相应地垂直展开。(我希望所有文本都可见)
它实际上并不会发生。正如您在屏幕截图中看到的,我介绍了8行代码,但文本区域没有扩展。
这有可能吗?如果不是,height=的“自动”到底代表什么?
发布于 2021-11-27 19:52:05
如果你改变了
layout=widgets.Layout(height="auto", width="auto")
为
layout=widgets.Layout(height="100%", width="auto")
它将调整大小以显示它在value
上的所有文本(Textarea的默认值)。
但是,当你打字的时候,它不会长出来。我不记得任何在网页上这样做的文本区域。
还有一件事。如果使用网格,使用height="auto"
并调整Textarea的大小(按角拖动),它将调整网格的其他相关元素的大小。
如果你使用height="100%"
,那就不会发生了
发布于 2020-04-06 20:19:32
参数widget = 'auto‘将小部件的CSS设置为“auto”。但是它对文本区域没有影响,因为行数是硬编码的。杰森·格劳特( Jason )在这个Github哨所中谈到了这一点。
如果您想要一个不断增长的文本区域,您可以使用以下解决方法:
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
免责声明:我不知道这种行为是否有用。您将放弃文本区域的大小控制。
https://stackoverflow.com/questions/61046005
复制相似问题