У меня есть приложение Taipy, в котором я хочу при выборе значения из раскрывающегося компонента, для динамически рендеринговых таблиц. < /p>
У меня есть кадр данных, который я загружаю из файла CSV с столбцами:
partnername, regionname, userid, группа, depocitamount, shipdrawalamount, my empurevenue < /emerid, группа, depocitamount, shipdrawalamount, my emer-emer. будет содержать значения: partnername, regionName, userId, GroupName . После каждого выбора значения из раскрывающегося списка будет удалено значение, и таблица будет отображаться, вместе с другими таблицами, которые уже отображаются , для ранее выбранных значений.
Для каждого выбранного значения из раскрывающегося списка, исходное значение (по умолчанию). В таблице должны быть данные из этой агрегированной кадры данных.
Моя идея до сих пор заключалась в том, чтобы сохранить каждый из этих агрегированных кадров данных в список, а затем итерацию через этот список и отобразить его в таблице, используя partial от Taipy. При попытке использовать индекс < /p>
for i, _ in enumerate(state.tables_data):
with builder.part("card"):
builder.text(f"Filter applied: {state.filter_display_texts}", class_name="h2")
builder.table(data=state.tables_data, page_size=10)
< /code>
, он всегда говорит, что < /p>
> WARNING:root:
--- 1 warning(s) were found for page 'TaiPy_partials_0' ---
- Warning 1: table.data property should be bound.
-------------------------------------------------------------
return attrgetter(name)(gui._get_data_scope())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'types.SimpleNamespace' object has no attribute ''
< /code>
< /blockquote>
и если я попытаюсь итерации по кадру данных, это написано: < /p>
--- 2 Предупреждение (ы) было найдено для страницы 'taipy_partials_0' --- < /p>
warnging 1: table. /> Предупреждение 2: не могу найти доступный доступ к типу . < /li>
< /ul>
< /blockquote>
и ошибка < /p>
traceback (самый последний вызов последний): файл
/>"taipy_apps\taipy-app\lib\site-packages\taipy\gui\gui.py ", Line 676,
in _manage_message
self.__request_data_update(str(message.get("NAM />"taipy_apps\taipy-app\lib\site-packages\tiapy\gui\gui.py ", Line 1134,
in __request_data_update
newvalue = _getscopeattr_drill (self_name)
/> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ attrgetter (name) (gui._get_data_scope ())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ e) < /p>
< /blockquote>
Я использую:
python v3.12.0
taipy v4.0.3
pandas v2.2.2 < /p>
My code so far:
from taipy.gui import Gui
import taipy.gui.builder as builder
import pandas as pd
from datetime import date
# Load data
data = pd.read_csv('my_data.csv')
data.fillna(0, inplace=True)
# Initialize variables
selected_partners = None
partners = data['partnerName'].unique().tolist()
starting = date(2025, 1, 1)
ending = date(2025, 5, 1)
dates = [starting, ending]
selected_filter = None
filters = [ 'partnerName', 'regionName', 'userId', 'groupName' ]
filter_display_texts = []
tables_data = []
def load_data(state):
print(state.selected_partners)
print(state.dates)
state.data = data[data['partnerName'].isin(state.selected_partners)] if state.selected_partners else data
def filter_category(state):
if not state.selected_filter:
return
print('Filtering data by:', state.selected_filter)
state.filter_display_texts.append(state.selected_filter)
value = state.data.groupby(state.selected_filter)[['depositAmount', 'withdrawalAmount', 'totalRevenue']].sum().reset_index()
state.tables_data.append(value)
with builder.Page() as table_data:
with builder.layout("1"):
for val in state.tables_data:
with builder.part("card"):
builder.table(data=val, class_name="h2")
tables_partial.update_content(state, table_data)
state.filters = [f for f in state.filters if f != state.selected_filter]
def reset_state(state):
pass
with builder.Page() as page:
builder.date_range(dates="{dates}", label_start="Start Date", label_end="End Date")
builder.selector(value="{selected_partners}", lov="{partners}", dropdown=True, multiple=True, filter=True, label="Select region (if none all will be displayed)")
builder.button(label="Submit", on_action=load_data)
builder.button(label="Reset", on_action=reset_state)
builder.html("br")
builder.selector(value='{selected_filter}', lov="{filters}", dropdown=True, label='Select filter', on_change=filter_category)
builder.part(partial="{tables_partial}")
gui = Gui(page=page)
tables_partial = gui.add_partial("")
gui.run(title="Analytics Dashboard", dark_mode=True, use_reloader=True, port=5001, debug=True)
Подробнее здесь: https://stackoverflow.com/questions/796 ... -taipy-app
Как динамически отображать таблицы в приложении Taipy ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение