【问题标题】:ipywidgets Textarea height='auto' does not workipywidgets Textarea height='auto' 不起作用
【发布时间】:2020-07-17 15:17:13
【问题描述】:

我正在使用 ipywidgets 创建一个仪表板,瞧

我有一个 Textarea 如下:

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

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

它实际上并没有发生。 正如您在屏幕截图中看到的那样,我引入了 8 行,但 textarea 并没有随之展开。

这可能吗? 如果不是,那么 height="auto" 究竟代表什么?

【问题讨论】:

    标签: layout textarea height ipywidgets voila


    【解决方案1】:

    如果你改变了

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

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

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

    但是,它不会随着您键入而增长。我不记得任何在网页上执行此操作的文本区域。

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

    如果您使用height="100%",则不会发生这种情况

    【讨论】:

      【解决方案2】:

      参数 height='auto' 将小部件的 CSS 设置为 'auto'。但它对 textarea 没有影响,因为行数是硬编码的。 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
      

      免责声明:我不知道这种行为是否有用。您将放弃控制 textarea 的大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-31
        • 2013-02-22
        • 1970-01-01
        • 2017-05-10
        • 2013-06-03
        相关资源
        最近更新 更多