Erst Schleife vollständig bearbeiten, dann Wechsel zur Klasse

Fragen zu Tkinter.
Antworten
DMD-OS
User
Beiträge: 165
Registriert: Freitag 28. Dezember 2018, 13:52

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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, ……
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
DMD-OS
User
Beiträge: 165
Registriert: Freitag 28. Dezember 2018, 13:52

Danke, da weiß ich aber erstma bescheid :)
Antworten