Seite 1 von 1

treeview mit alternierender hintergrundfarbe

Verfasst: Freitag 17. November 2006, 23:25
von borg
hallo,

ich hab ein treeview und möchte gerne die hintergrundfarbe der zellen abwechselnd haben.
dazu kann man einfach das property "rules-hint" vom treeview auf True setzen, leider hat dann wirklich jede zeile wieder eine neue farbe, ich würds aber gerne so haben:

Code: Alles auswählen

| grau
| weiß
-- weiß
 | weiß
 | weiß
| grau
-- grau
 | grau
| weiß
usw.
also alles was zu einer aufgeklappten zelle gehört soll die gleiche farbe haben.
einer eine ahnung wie ich das hinbekommen könnte?

Re: treeview mit alternierender hintergrundfarbe

Verfasst: Sonntag 19. November 2006, 13:24
von wscharinger
borg hat geschrieben:hallo,

ich hab ein treeview und möchte gerne die hintergrundfarbe der zellen abwechselnd haben.
dazu kann man einfach das property "rules-hint" vom treeview auf True setzen, leider hat dann wirklich jede zeile wieder eine neue farbe, ich würds aber gerne so haben:

Code: Alles auswählen

| grau
| weiß
-- weiß
 | weiß
 | weiß
| grau
-- grau
 | grau
| weiß
usw.
also alles was zu einer aufgeklappten zelle gehört soll die gleiche farbe haben.
einer eine ahnung wie ich das hinbekommen könnte?
Wie genau die Vorgehensweise für dein Beispiel ist, kann ich dir jetzt auf die Schnelle nicht zusammenstellen, aber ich denke, du kannst das mit folgender Funktion hinbekommen:

Code: Alles auswählen


        def type_col_datafunc(column, cell, model, iter):
            # Funktion wird unten für jede Zelle aufgerufen

            # evtl. Werte aus dem TreeModel auslesen
            art = model.get_value(iter, 0)
            wert = model.get_value(iter, 1)

            # jetzt anhand der ausgelesenen Werte Attribute zuweisen.
            # Beachte: Attribut bleibt solange "aktiv", bis du es wieder
            # mit einem anderen Wert belegst.
            # Wenn also im "true-zweig" für eine Zelle die Schrift auf blau 
            # geschaltet wird, bleibt sie solange blau, bis du sie - evtl. im 
            # "else-Zweig" wieder auf schwarz stellst.
            if wert == "xy":
                # wenn Bedingung war, Attribute setzen
                self.cell1.set_property('background', 'blue')
                self.cell1.set_property('weight', 800)
            else:
                # hier Attribute wieder zurück- oder anders setzen
                self.cell1.set_property('background', 'green')
                self.cell1.set_property('weight', 400)

        # Hier die Funktion für die Zell-Formatierung zuweisen
        self.treeviewcolumn.set_cell_data_func(self.cell1, type_col_datafunc)


Verfasst: Montag 20. November 2006, 20:35
von borg
besten dank, funktioniert.
jetzt ist nur noch die frage wie ich an die default-farben komme.

treeview.style_get_property("odd-row-color")
und
treeview.style_get_property("even-row-color")

geben immer None zurück. ich wollte die farben aber eigentlich schon so machen wie sie im jeweiligem theme sind. hat da vielleicht auch jemand ne idee wie man da dran kommt? :)

Verfasst: Mittwoch 29. November 2006, 18:52
von wscharinger
borg hat geschrieben:besten dank, funktioniert.
jetzt ist nur noch die frage wie ich an die default-farben komme.

treeview.style_get_property("odd-row-color")
und
treeview.style_get_property("even-row-color")

geben immer None zurück. ich wollte die farben aber eigentlich schon so machen wie sie im jeweiligem theme sind. hat da vielleicht auch jemand ne idee wie man da dran kommt? :)
Hmmmm? Hast du den bei Properties "rules-hint" auf True gestellt?
Hab's nicht probiert, würde aber mal annehmen, dass du None bekommst, falls die Hint's False sind? Nur mal so in's Blaue...