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._table_view.setColumnWidth(i, max_char * 10)
|
||||||
|
|
||||||
self._show_warnings(df)
|
self._show_warnings(df)
|
||||||
|
self._update_categories_from_dataframe(df)
|
||||||
|
|
||||||
def get_statement_data(self) -> pd.DataFrame:
|
def get_statement_data(self) -> pd.DataFrame:
|
||||||
return self._table_view.model().sourceModel().get_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:
|
for category in categories:
|
||||||
self._list_widget.addItem(category)
|
self._list_widget.addItem(category)
|
||||||
|
|
||||||
@ -267,7 +277,7 @@ class MainWindow(QMainWindow):
|
|||||||
in range(self._list_widget.count())]
|
in range(self._list_widget.count())]
|
||||||
|
|
||||||
if new_name not in current_items:
|
if new_name not in current_items:
|
||||||
self.add_categories([new_name])
|
self._add_categories([new_name])
|
||||||
else:
|
else:
|
||||||
QMessageBox.warning(self, "No action performed",
|
QMessageBox.warning(self, "No action performed",
|
||||||
f"Category '{new_name}' already exists.")
|
f"Category '{new_name}' already exists.")
|
||||||
@ -311,14 +321,10 @@ class MainWindow(QMainWindow):
|
|||||||
df.to_csv(filename, index=False)
|
df.to_csv(filename, index=False)
|
||||||
|
|
||||||
|
|
||||||
def show_main_window(categories: typing.Sequence[str] = None,
|
def show_main_window(df: pd.DataFrame = None):
|
||||||
df: pd.DataFrame = None):
|
|
||||||
app = QApplication(sys.argv)
|
app = QApplication(sys.argv)
|
||||||
window = MainWindow()
|
window = MainWindow()
|
||||||
|
|
||||||
if categories is not None:
|
|
||||||
window.add_categories(categories)
|
|
||||||
|
|
||||||
if df is not None:
|
if df is not None:
|
||||||
window.set_statement_data(df)
|
window.set_statement_data(df)
|
||||||
|
|
||||||
@ -335,7 +341,7 @@ def main():
|
|||||||
|
|
||||||
df = pd.read_csv("res/bank_statement_2023_categorized_renamed.csv")
|
df = pd.read_csv("res/bank_statement_2023_categorized_renamed.csv")
|
||||||
|
|
||||||
show_main_window(categories, df)
|
show_main_window(df)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user