Hi,
is there possible to call a python function inside a html generated markdown?
I have something like this:
def img_to_markdown(img_path, inherit=""):
def img_to_bytes(path):
return base64.b64encode(Path(path).read_bytes()).decode()
class_inherit = f"class='{inherit}'" if inherit else ""
img_html = (
f"""<img src='data:image/png;base64,{img_to_bytes(img_path)}' {class_inherit}>""")
return img_html
class Table():
def btn_download_button(self, raw: str) -> str:
if raw:
return f"""<a href='{raw}' download='{raw}' class='centered-image-button'>
{img_to_markdown("./images/download.png", inherit='enabled')}
</a>"""
else:
return f"""<div class='centered-image-button'>
{img_to_markdown("./images/download.png", inherit='disabled')}
</div>"""
def btn_delete(self, key):
return f"""<div key={key} class='centered-image-button'>
{img_to_markdown("./images/delete.png", inherit='enabled')}
</div>"""
def render(self, documents):
table_data = [[document.field1,
document.field2,
self.btn_download_button(document.field3),
self.btn_download_button(document.field4),
self.btn_delete(document.delete)]
for document in documents]
table_rows = [f"<tr>{''.join([f'<td>{d}</td>' for d in document])}</tr>" for document in table_data]
if not table_rows:
table_rows = ["<tr></tr>"]
st.warning("No files found.")
table = f"""<table>
<tr>
<th>Field1</th>
<th>FIeld2</th>
<th>Field3</th>
<th>Field4</th>
<th>Delete</th>
</tr>
{"".join(table_rows)}
</table>"""
st.markdown(table, unsafe_allow_html=True)
And i want to update the btn_delete in a way to call a python function, something like that:
def delete(key):
...
def btn_delete(self, key):
return st.button(label=f"Delete {key}", on_click=delete, args=key)
In this way the buttons are rendered but not inside the table. Is there a way to add the function to the html tag or to render the st.button inside the table ?
Hope to be clear
Thanks a lot!