| |
| |
| |
| |
| |
| |
|
|
| import logging |
| from math import ceil |
|
|
| import streamlit as st |
|
|
| logger = logging.getLogger(__name__) |
|
|
|
|
| class Library(): |
| """Create a simple library out of streamlit widgets. |
| |
| Using the library is simple, import `streamlit_uploads_library` and then instantiate the class with the |
| required `directory` variable. Other options can be configured by passing in different variables |
| when instantiating the class. |
| |
| Example Usage: |
| python |
| import streamlit as st |
| from library import Library |
| |
| st.set_page_config(page_title="Streamlit Uploads Library", layout="wide") |
| default_library = Library(images=pil_images) |
| """ |
|
|
| def __init__(self, images, image_alignment='end', number_of_columns=5): |
| self.images = images |
| self.image_alignment = image_alignment |
| self.number_of_columns = number_of_columns |
| self.root_container = self.create(images=self.images, |
| image_alignment=self.image_alignment, |
| number_of_columns=self.number_of_columns) |
|
|
| def create(_self, images, image_alignment, number_of_columns): |
| """Creates a simple library or gallery with columns. |
| |
| Creates a library or gallery using columns out of streamlit widgets. |
| """ |
| root_container = st.container() |
| with root_container: |
| |
| |
| |
| |
| col_idx = 0 |
| filename_idx = 0 |
| max_idx = number_of_columns - 1 |
| |
| |
| library_files = images |
| num_of_files = len(library_files) |
| |
| |
| num_of_rows_req = ceil(num_of_files / number_of_columns) |
| |
| library_rows = list() |
| library_rows_idx = 0 |
| for i in range(num_of_rows_req): |
| library_rows.append(st.container()) |
| |
| |
| for idx in range(num_of_rows_req): |
| with library_rows[library_rows_idx]: |
| imgs_columns = list(st.columns(number_of_columns)) |
| |
| |
| |
| for img in library_files[filename_idx:(filename_idx + number_of_columns)]: |
| with imgs_columns[col_idx]: |
| st.image(img, use_column_width='auto') |
| st.write( |
| f"""<style> |
| [data-testid="stHorizontalBlock"] {{ |
| align-items: {image_alignment}; |
| }} |
| </style> |
| """, |
| unsafe_allow_html=True |
| ) |
| |
| |
| |
| if col_idx < max_idx: |
| col_idx += 1 |
| else: |
| col_idx = 0 |
| library_rows_idx += 1 |
| filename_idx += 1 |
| return root_container |
|
|