Automatically update categories from loaded dataframe

This commit is contained in:
Andreas Tsouchlos 2024-01-04 05:29:21 +01:00
parent e2bf90d4d8
commit f4b73064ff

View File

@ -130,11 +130,21 @@ class MainWindow(QMainWindow):
self._table_view.setColumnWidth(i, max_char * 10)
self._show_warnings(df)
self._update_categories_from_dataframe(df)
def get_statement_data(self) -> pd.DataFrame:
return self._table_view.model().sourceModel().get_dataframe()
def add_categories(self, categories: typing.Sequence[str]):
def _update_categories_from_dataframe(self, df: pd.DataFrame):
df_categories = df['category'].unique()
current_categories = [self._list_widget.item(x).text() for x
in range(self._list_widget.count())]
missing = list(set(df_categories) - set(current_categories))
self._add_categories([category for category
in missing if category != ' '])
def _add_categories(self, categories: typing.Sequence[str]):
for category in categories:
self._list_widget.addItem(category)
@ -267,7 +277,7 @@ class MainWindow(QMainWindow):
in range(self._list_widget.count())]
if new_name not in current_items:
self.add_categories([new_name])
self._add_categories([new_name])
else:
QMessageBox.warning(self, "No action performed",
f"Category '{new_name}' already exists.")
@ -311,14 +321,10 @@ class MainWindow(QMainWindow):
df.to_csv(filename, index=False)
def show_main_window(categories: typing.Sequence[str] = None,
df: pd.DataFrame = None):
def show_main_window(df: pd.DataFrame = None):
app = QApplication(sys.argv)
window = MainWindow()
if categories is not None:
window.add_categories(categories)
if df is not None:
window.set_statement_data(df)
@ -335,7 +341,7 @@ def main():
df = pd.read_csv("res/bank_statement_2023_categorized_renamed.csv")
show_main_window(categories, df)
show_main_window(df)
if __name__ == "__main__":