Label in einer Tabelle verändern(Farbe)
Verfasst: Mittwoch 2. November 2005, 13:12
Hallo
Ich möchte gerne in einer Tabelle aus Labeln das Aussehen einzelner Zeilen und Spalten verändern.
Umgesetzt habe ich bis jetzt:
- färbe Text in Zeilen mit negativen Beträgen rot
- hebe jede 2. Spalte hervor
Mein if-else Konstrukt sieht aber jetzt schon abenteuerlich aus.
Wenn ich nun noch den Fall einbaue:
- färbe den Hintergrund jeder 2. Zeile weiß
wird es mir zu viel.
Meine Fragen nun:
1) Kann ich nicht irgendwie einmal das Grid mit Standartwerden(Farben) aufbauen und nachträglich in eigenen Funktionen für die einzelnen Fälle die Labels beeinflussen?
Eine Idee habe ich schon unter:
http://www.python-forum.de/viewtopic.php?t=3474
gesehen.
Da werden alle Labels erst in einer Liste gespeichert und darüber können dann einzelne Elemente verändern werden.
1.2) Was haltet ihr davon? Ist das elegant? Ich erwarte einige hundert Zeilen und 10 Spalten
2)Kann man auch die Rahmenfarbe eines Labels verändern (habe da bisher nix zu finden können)?
Bin für jede Idee / jeden Tipp dankbar.
cu Sebastian
Ich möchte gerne in einer Tabelle aus Labeln das Aussehen einzelner Zeilen und Spalten verändern.
Umgesetzt habe ich bis jetzt:
- färbe Text in Zeilen mit negativen Beträgen rot
- hebe jede 2. Spalte hervor
Code: Alles auswählen
#!/usr/bin/env python
import string
from Tkinter import *
verschachtelte_liste = [
["BAR FOOBAR","12345678","23456789","-2,05","EUR"],
["FOO,BAR","119032142","23456789","180,00","EUR"],
["BAR FOOBAR","12345678","23456789","-2,05","EUR"],
["FOO,BAR","119032142","23456789","180,00","EUR"],
]
root=Tk()
root.title("Labels im array")
for zeile in range(len(verschachtelte_liste)):
for spalte in range(len(verschachtelte_liste[zeile])):
if string.atof(string.replace(verschachtelte_liste[zeile][3], ",", "."))<0:
if spalte % 2 == 0:
Label(
text=verschachtelte_liste[zeile][spalte],
bd=1, relief="flat",fg="red"
).grid(
row=zeile, column=spalte,sticky=E+W)
else:
Label(
text=verschachtelte_liste[zeile][spalte],
bd=1, relief="groove",fg="red"
).grid(
row=zeile, column=spalte,sticky=E+W)
else:
if spalte % 2 == 0:
Label(
text=verschachtelte_liste[zeile][spalte],
bd=1, relief="flat",
).grid(
row=zeile, column=spalte,sticky=E+W)
else:
Label(
text=verschachtelte_liste[zeile][spalte],
bd=1, relief="groove"
).grid(
row=zeile, column=spalte,sticky=E+W)
root.mainloop()
Mein if-else Konstrukt sieht aber jetzt schon abenteuerlich aus.
Wenn ich nun noch den Fall einbaue:
- färbe den Hintergrund jeder 2. Zeile weiß
wird es mir zu viel.
Meine Fragen nun:
1) Kann ich nicht irgendwie einmal das Grid mit Standartwerden(Farben) aufbauen und nachträglich in eigenen Funktionen für die einzelnen Fälle die Labels beeinflussen?
Eine Idee habe ich schon unter:
http://www.python-forum.de/viewtopic.php?t=3474
gesehen.
Da werden alle Labels erst in einer Liste gespeichert und darüber können dann einzelne Elemente verändern werden.
1.2) Was haltet ihr davon? Ist das elegant? Ich erwarte einige hundert Zeilen und 10 Spalten
2)Kann man auch die Rahmenfarbe eines Labels verändern (habe da bisher nix zu finden können)?
Bin für jede Idee / jeden Tipp dankbar.
cu Sebastian