Я могу создать один виджет выбора (портфолио) и один зависимый виджет множественного выбора (ключевые слова) (ключевые слова меняются в зависимости от выбранного портфолио). Однако я изо всех сил пытаюсь получить значения Multiselect. Я не уверен, как передать виджет с заполненными ключевыми словами из get_folio_terms () в основной раздел, чтобы он отражался в множественном выборе. Любая помощь по этому поводу приветствуется.
PS: Код правильно отображает множественный выбор с правильными значениями, заполненными из get_folio_terms ().
Вот код:
keywords = MultiSelect(title="Keywords", options=[])
def get_folio_terms(attrname, old, new):
connection = pymysql.connect(host='localhost',
user='root',
password='root',
db='qa_env',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
with connection.cursor() as cursor:
sqlstmt1 = "SELECT * from portfolioterms where portfolio_name = "
sql = sqlstmt1 + "'" + portfolio.value + "';" # handle Keyerror later
print(sql)
cursor.execute(sql)
result = cursor.fetchall()
if cursor.rowcount > 0:
dfinput = pd.DataFrame.from_dict(result)
print(dfinput)
keywords = MultiSelect(title="Keywords", options=list(dfinput['businessterm']))
layout.children[1] = keywords
else:
keywords = MultiSelect(title="Keywords", options=[]) # reset to empty
layout.children[1] = keywords
def update_portfolio():
print(portfolio.value, keywords.value)
def update(attrname, old, new):
print(keywords.value)
# set up select widget
portfolio = Select(title="portfolio", options=['ERT','Trading', 'Wealth'])
portfolio.on_change('value', get_folio_terms)
keywords.on_change('value', update)
kwbutton = Button(label='Select Keywords',width=150,button_type="success")
kwbutton.on_click(update_portfolio)
layout = column(portfolio,keywords,kwbutton)
curdoc().add_root(layout)