Automatically update categories from loaded dataframe
This commit is contained in:
parent
e2bf90d4d8
commit
f4b73064ff
@ -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__":
|
||||
|
||||
Loading…
Reference in New Issue
Block a user