Панель модуля Python не может обновить основную областьPython

Программы на Python
Anonymous
Панель модуля Python не может обновить основную область

Сообщение Anonymous »

Следующий код Динамически считывает файлы Python из модуля страниц. Каждый файл содержит функцию create_page , которая возвращает такие объекты, как pn.column , которую можно отображать на панели. Создайте одну кнопку для каждого файла на боковой панели, и, нажав кнопку, замените содержимое основной области на содержимое, возвращаемое соответствующей функцией create_page .
import panel as pn
import pkgutil
import importlib

pages = dict()
for _, page, _ in pkgutil.iter_modules(["pages"]):
pages[page] = importlib.import_module(f"pages.{page}")

template = pn.template.FastListTemplate(
title="Muti pages demo",
site="Web main"
)

def change_main_content(event):
template.main.clear()
template.main.append(pages[event.obj.name].create_page())

def change_main_content_str(event):
print(event)
template.main.clear()
template.main.append(pages[event].create_page())

for page in pages.keys():
page_button = pn.widgets.Button(name=page)
# Issue: Clicking the button to trigger the change_main_content_str function
# does not update the main area!
page_button.on_click(lambda event: change_main_content_str(event.obj.name))
# However, calling the function directly works as expected!
change_main_content_str("data")
template.sidebar.append(page_button)

template.servable()
< /code>
Почему возникает эта проблема? Как это может быть исправлено?

Подробнее здесь: https://stackoverflow.com/questions/794 ... -main-area

Вернуться в «Python»