Seite 1 von 1

Erst Schleife vollständig bearbeiten, dann Wechsel zur Klasse

Verfasst: Mittwoch 13. November 2019, 15:10
von DMD-OS
hallo
ich möchte Entries in einer Tabelle farblich makieren, BEVOR ich an eine Klasse übergebe,
so daß die Hintergrundfarbe aller Entries in einer Spalte zuerst geändert wird,
und erst danach das Programm weiterläuft.
Mein Codeversuch:

Code: Alles auswählen

                    for rst_idx, rst_ele in enumerate(rst_lst):
                        table_positions[rst_idx].configure(bg="white")
                    else:
                        backend = Backend(
                            self.main_path,
                            self.db_folder,
                            db_file,
                            db_name,
                            work_file,
                            style_file,
                            sheet_names,
                            sheet_rows,
                            sheet_columns,
                            header_positions,
                            table_positions
                            )
                        back_typ, back_rst = backend.main()
Das was ich immer erhalte, ist, daß die vorherige Entry-Farbe erst geändert wird, wenn der Code vollständig durchlaufen wurde, d.h. mit Klasse :(
Kann man zuerst die Schleife durchlaufen (alle Entry-Farben ändern) und erst dann weitermachen?

Re: Erst Schleife vollständig bearbeiten, dann Wechsel zur Klasse

Verfasst: Mittwoch 13. November 2019, 16:04
von __blackjack__
@DMD-OS: Das ``else`` ist sinnfrei, das ist einfach Code der *nach* der Schleife kommt.

Wenn die Änderung der Hintergrundfarbe aktiv werden soll, muss zwischenzeitlich mal zur Hauptschleife zurückgekehrt werden, das heisst Du müsstest mit `after()` arbeiten.

Re: Erst Schleife vollständig bearbeiten, dann Wechsel zur Klasse

Verfasst: Mittwoch 13. November 2019, 16:29
von __blackjack__

Code: Alles auswählen

...
                    
                    for table_position in islice(
                        table_positions, len(rst_lst)
                    ):
                        table_position["bg"] = "white"

                    table_position[0].after(
                        10,
                        self.call_backend,
                        db_file,
                        db_name,
                        work_file,
                        style_file,
                        sheet_names,
                        sheet_rows,
                        sheet_columns,
                        header_positions,
                        table_positions,
                    )
                    return

    def call_backend(
        self,
        db_file,
        db_name,
        work_file,
        style_file,
        sheet_names,
        sheet_rows,
        sheet_columns,
        header_positions,
        table_positions,
    ):
        back_typ, back_rst = Backend(
            self.main_path,
            self.db_folder,
            db_file,
            db_name,
            work_file,
            style_file,
            sheet_names,
            sheet_rows,
            sheet_columns,
            header_positions,
            table_positions,
        ).main()
        
        ...
Wobei das ganze schon etwas komisch aussieht. Tief verschachtelt, ziemlich viele lokale Namen, eine Klasse deren API aus `__init__()` und einer weiteren Methode besteht, ……

Re: Erst Schleife vollständig bearbeiten, dann Wechsel zur Klasse

Verfasst: Mittwoch 27. November 2019, 15:43
von DMD-OS
Danke, da weiß ich aber erstma bescheid :)