Onigiri10

budget_v31.05

Jun 1st, 2022 (edited)
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.76 KB | None | 0 0
  1. '''UPD: Добавлена таблица aggrid с возможностью редактирования и флажками + поиск слова в таблице'''
  2. import streamlit as st
  3. import pandas as pd
  4. from st_aggrid import AgGrid,GridOptionsBuilder, GridUpdateMode
  5.  
  6. st.set_page_config(page_title='Расчет бюджетной оценки',
  7.                    page_icon=':pencil:',
  8.                    layout='wide')
  9.  
  10. st.image('avaya.png',width=200) #вставка лого
  11.  
  12. #табличка с примером  
  13. df = pd.DataFrame({  
  14.   'first column': [1, 2, 3, 4],
  15.   'second column': [10, 20, 30, 40]
  16. })                                    
  17.  
  18. #боковая панель
  19. st.sidebar.header('Добавление новых записей в базу')
  20. product_code = st.sidebar.number_input('Введите код товара (при наличии)',0,None) #param: min - 0, max - None
  21. product_name = st.sidebar.text_input('Введите название позиции')
  22. button_add_entry = st.sidebar.button("Добавить") #кнопка добавления новой записи в таблицу
  23. if button_add_entry:
  24.   new_row = {'first column':5}
  25.   df.append(new_row, ignore_index=True)  #ошибка - не добавляется запись
  26.  
  27. st.title('Приложение для расчета и формирования бюджетной оценки') #заголовок
  28.  
  29. col1, col2 = st.columns(2) #разделение макета на 2 столбца
  30.  
  31. #поиск товара по коду (прецедент)
  32. number_text = col1.number_input('Введите код товара',0,None,1)  
  33. st.write(f"Выбранный код товара: {int(number_text)}")
  34. col2.caption('Нажмите на кпопку для поиска')
  35. col2.button('Поиск')
  36.  
  37. #при использовании формы (form) страница не будет перегружаться каждый раз при изменении каких-то параметров,
  38. #а только при нажатии кнопки (form_submit_button)
  39. form1 = st.form(key='Table')
  40. form1.table(df)
  41. form1.form_submit_button('Click me')
  42.  
  43.  
  44. find_expander = st.expander('Поиск по ключевым словам')
  45. with find_expander:
  46.   #поиск товара по ключевым словам (прецедент)
  47.   find_expander.header('Поиск позиций по ключевым словам')
  48.   options = find_expander.multiselect('Выберете ключевые слова',['Communication manager - CM',
  49. 'System manager - SMGR'])
  50.  
  51.  
  52. @st.cache #кэширование данных
  53. def file_upload(): #функция загрузки данных их excel-файла
  54.   df2 = pd.read_excel(
  55.         io='Landata.xlsx',
  56.         engine='openpyxl',
  57.         sheet_name='Landata',
  58.         usecols='A:D',
  59.         nrows=10)
  60.   return df2
  61.  
  62. df2 = file_upload()
  63.  
  64. gb = GridOptionsBuilder.from_dataframe(df2)
  65. gb.configure_pagination(paginationAutoPageSize=True) #есть навигация по страницам таблицы
  66. gb.configure_default_column(editable=True) #возможность редактировать таблицу
  67. gb.configure_selection('multiple', use_checkbox=True) #множетвенное выделение флажками
  68. grid_options=gb.build()
  69. grid_table = AgGrid(df2,gridOptions=grid_options,
  70.                     update_mode = GridUpdateMode.SELECTION_CHANGED,
  71.                     theme = 'light')
  72.  
  73. sel_rows = grid_table['selected_rows']
  74. st.write(sel_rows)
  75.  
  76. st.markdown("""---""") #черта
  77. #поиск по словам в столбце "Product Description"
  78. df1 = df2[df2['Product Description'].str.contains('AAEP')] #выбор позиций, в которых есть слово 'AAEP'
  79. st.write(df1)
  80.  
Add Comment
Please, Sign In to add comment