【问题标题】:Creating several input boxes from df in Python - smartly在 Python 中从 df 创建多个输入框 - 巧妙地
【发布时间】:2022-06-10 21:29:44
【问题描述】:

我正在尝试基于 Excel 电子表格创建输入表单。 我使用电子表格创建一个数据框(其中列出了 30 个“产品”) 我需要为列表中的每个产品创建一系列输入框。 目前我这样做的效率非常低:

  product_1 = (ipw.Dropdown(options=barrier_list['Product Name'],
                   value = barrier_list['Product Name'][0],
                   description= barrier_list['ISIN'][0],
                   disabled=False,
                   layout = {'width':'350px'}))
  product_1.style.description_width = 'initial'

  units_1 = (ipw.IntText(value=for_table['Units'][0],
                   description='Units:',
                   disabled=False,
                   layout = {'width':'200px'}
                  ))

  price_1 = (ipw.FloatText(value=for_table['Price'][0],
                   description='Price:',
                   disabled=False,
                   layout = {'width':'200px'}
                  ))

  value_1 = (ipw.FloatText(value=0,
                   description='Value:',
                   disabled=False,
                   layout = {'width':'200px'}
                  ))

  HBox_1 = ipw.HBox([product_1,units_1,price_1, value_1])

这正是我需要的输入表的一行。要执行下一行,我再次复制此确切代码并将所有 [0] 更改为 [1]。这持续了 30 倍。

我知道这是一种糟糕的方法,但我不知道如何使用循环来创建 30 行(每个产品 1 行)输入框。

【问题讨论】:

  • 不是解决方案,只是一个指针。您可能需要遍历列,然后根据相关列的 dtype 创建适当的小部件,然后随时追加到列表中。

标签: python loops ipywidgets


【解决方案1】:

指导奏效了。我的解决方案很简单,大致如下:

dd_list = []
for i in range(len(barrier_list['Product Name'])):
     dropdown = widgets.Text(description=barrier_list['ISIN'][i],
                           value=barrier_list['Product Name'][i])

     dd_list.append(dropdown)

VBox1 = widgets.VBox(dd_list)
  
VBox1

只需要创建其他盒子并添加到VBox。

【讨论】:

    猜你喜欢
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2022-12-03
    • 2016-05-30
    相关资源
    最近更新 更多