我正在尝试使用jupyter笔记本中的pyviz来创建某种形式,以便其他人填充数据。单击保存按钮后,该数据将被保存到嵌套列表中。然后你对每个人重复一遍。
然后我需要一个按钮来显示嵌套列表的当前输入。
有人能告诉我正确的方向吗?到目前为止,我只得到了输入域,列表总是空的。
# 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"]]发布于 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,但此变量从未在的任何地方使用
例如:
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()'https://stackoverflow.com/questions/56637099
复制相似问题