首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jupyternotebook中的pyviz作为表单,将输入放入嵌套列表并显示内容

使用jupyternotebook中的pyviz作为表单,将输入放入嵌套列表并显示内容
EN

Stack Overflow用户
提问于 2019-06-18 02:41:27
回答 1查看 61关注 0票数 0

我正在尝试使用jupyter笔记本中的pyviz来创建某种形式,以便其他人填充数据。单击保存按钮后,该数据将被保存到嵌套列表中。然后你对每个人重复一遍。

然后我需要一个按钮来显示嵌套列表的当前输入。

有人能告诉我正确的方向吗?到目前为止,我只得到了输入域,列表总是空的。

代码语言:javascript
复制
# companies at which people are working
company = ['wal', 'even', 'foot']
class Company(param.Parameterized):
    # dropdown of company
    company = param.ObjectSelector(objects=company)
    # name of person
    personname = param.String(doc="name")
    # age of person
    age = param.Number(0)
    # save to list button
    save_btn = param.Action(lambda self:self.param.trigger('save_btn'),doc="""Save""")
    # show list
    show_btn = param.Action(lambda self: self.param.trigger('show_btn'),doc="""Show dicitonary""")
    # dict which collects all input
    all_persons = []
    # return content of dict
    @param.depends('show_btn')
    def show_list(self):
        return self.all_persons
    # save form content to dict
    @param.depends('save_btn')
    def save_to_list(self):
        temp_list = []
        temp_list.append[self.company]
        temp_list.append[self.personname]
        temp_list.append[self.age]
run = Company()

pn.Column(run.param.company, run.param.personname,     run.param.age,run.param.save_btn,run.param.show_btn, run.show_list)

# desired nested list
# [['wal', "bob", "34"], ["foot", "anna", "56"]]
EN

回答 1

Stack Overflow用户

发布于 2019-11-10 02:20:59

您的代码包含一些打字错误和零散的内容。从上到下:

  • all_persons被定义为空列表,但从未连接到在方法save_to_list()
  • @param.depends(...)中创建的临时列表缺少watch=True,例如@param.depends('show_btn', watch=True)
  • show_list()返回self.all_persons,但此变量从未在

的任何地方使用

例如:

代码语言:javascript
复制
company = ['A', 'B'] # simplified code
class Company(param.Parameterized):
    company = param.ObjectSelector(default=company[0], objects=company)
    person_name = param.String(doc="name")
    age = param.Number(0)

    save_btn = param.Action(lambda self: self.save_to_list() , doc="""Save""") # no need for param.trigger here...
    print_btn = param.Action(lambda self: self.print_list() , doc="""Print""") # no need for param.trigger here...

    all_persons = [] # starts with an empty list

    # no need for param.depends, as the method directly is called via param.Action, 
    def save_to_list(self):
        print('safe to list: {}, {}, {}'.format(self.company, self.person_name, self.age))
        temp_list = []
        temp_list.append(self.company) # use () for append, not []
        temp_list.append(self.person_name)
        temp_list.append(self.age)
        print('temp_list: {}'.format(temp_list))
        self.all_persons.append(temp_list)

    # no need for param.depends, as the method is directly called via param.Action, 
    def print_list(self):
        print('all_persons: {}'.format(self.all_persons))

run = Company()

layout = pn.Row(run.param)
layout.app() # to see print statements in a notebook, use the server variant via 'app()'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56637099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档