Tabellenzeilen sind durchgehende Streifen, das Grau hebt sich ab

Sein Fund: "schau mal zeile 1 und die ust, passen die hoehen nicht" und "das
grau muss heller als der bg sein".

Beides stimmte. Der Zebrastreifen sass an jedem LABEL einzeln - dadurch stand
neben der zweizeiligen Position 1 ein Satz halbhoher Kaestchen mit Luecken
darueber und darunter, und die USt-Zelle sass mittig statt in der Zeile. Jetzt
liegt der Hintergrund als EIN Streifen ueber alle Spalten, die Zellen sitzen
darin und fuellen die volle Zeilenhoehe. Die Kopfzeile bekommt denselben
Streifen, sonst stand der zweizeilige "Anzahl Tage/Menge" als Kasten heraus.

Der Streifen ist von #1b1e24 auf #232830 gegangen - vorher war der Unterschied
zum Kachelgrund kaum zu sehen, und genau dafuer ist er da.

Alle 14 Pruefstaende gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
This commit is contained in:
TheMockTv 2026-09-05 19:33:46 +02:00
parent 1c2b115108
commit a715d1235b
2 changed files with 36 additions and 22 deletions

54
app.py
View file

@ -418,12 +418,17 @@ class RechnungsApp(ThemeMixin, MeldungMixin, KorrekturMixin, EinstellungenMixin,
self.gesamt_lbls.clear()
# Kopfzeile (gleiches Grid wie die Daten)
# Kopfzeile: derselbe durchgehende Streifen wie die Datenzeilen, sonst
# steht der zweizeilige "Anzahl Tage/Menge" als Kasten heraus.
kopfgrund = tk.Frame(self.pos_frame, bg=self.col_card)
kopfgrund.grid(row=0, column=0, columnspan=len(self.COLS), sticky="nsew")
for i, (title, anchor, _) in enumerate(self.COLS):
ttk.Label(self.pos_frame, text=title.upper(), anchor=anchor,
style="Abschnitt.TLabel").grid(
row=0, column=i, padx=3, pady=(0, 5), sticky="ew")
tk.Label(self.pos_frame, text=title.upper(), anchor=anchor,
bg=self.col_card, fg=self.col_accent,
font=(theme.SCHRIFT_NAME, 9, "bold"), padx=6, pady=6).grid(
row=0, column=i, sticky="nsew")
ttk.Separator(self.pos_frame, orient="horizontal").grid(
row=1, column=0, columnspan=len(self.COLS), sticky="ew", pady=(0, 4))
row=1, column=0, columnspan=len(self.COLS), sticky="ew", pady=(0, 2))
for idx, pos in enumerate(self.cfg["katalog"]):
r = idx + 2
@ -435,26 +440,35 @@ class RechnungsApp(ThemeMixin, MeldungMixin, KorrekturMixin, EinstellungenMixin,
av.trace_add("write", lambda *a: self.recalc())
pv.trace_add("write", lambda *a: self.recalc())
# Jede zweite Zeile bekommt einen anderen Grund: bei 17 Positionen
# verrutscht man beim Eintragen sonst leicht eine Zeile.
zeilenstil = "Zebra.TLabel" if idx % 2 else "Karte.TLabel"
ttk.Label(self.pos_frame, text=str(nr), anchor="center", style=zeilenstil).grid(
row=r, column=0, padx=0, pady=3, sticky="ew", ipady=2)
ttk.Label(self.pos_frame, text=pos["leistung"], anchor="w", wraplength=320,
justify="left", style=zeilenstil).grid(
row=r, column=1, padx=0, pady=3, sticky="ew", ipady=2)
ttk.Label(self.pos_frame, text=str(pos["satz"]), anchor="center",
style=zeilenstil).grid(row=r, column=2, padx=0, pady=3, sticky="ew", ipady=2)
# Eine Zeile ist EIN durchgehender Streifen, kein Satz Kaestchen:
# der Hintergrund liegt ueber alle Spalten, die Zellen sitzen darin
# und fuellen die volle Zeilenhoehe (sticky="nsew"). Sonst klafften
# bei der zweizeiligen Position 1 Luecken ueber und unter den
# einzeiligen Zellen daneben.
grund = self.col_zebra if idx % 2 else self.col_card
streifen = tk.Frame(self.pos_frame, bg=grund)
streifen.grid(row=r, column=0, columnspan=len(self.COLS), sticky="nsew")
def zelle(text, spalte, anker="center", umbruch=0):
lbl = tk.Label(self.pos_frame, text=text, bg=grund, fg=self.col_fg,
font=theme.SCHRIFT, anchor=anker, justify="left",
padx=6, pady=6)
if umbruch:
lbl.configure(wraplength=umbruch)
lbl.grid(row=r, column=spalte, sticky="nsew")
return lbl
zelle(str(nr), 0)
zelle(pos["leistung"], 1, anker="w", umbruch=330)
zelle(str(pos["satz"]), 2)
ttk.Entry(self.pos_frame, textvariable=av, width=8, justify="center").grid(
row=r, column=3, padx=4, pady=3)
row=r, column=3, padx=6, pady=4)
# Personen-Feld NUR bei "pro Person"-Positionen anzeigen
if pos["pro_person"]:
ttk.Entry(self.pos_frame, textvariable=pv, width=6, justify="center").grid(
row=r, column=4, padx=4, pady=3)
ttk.Label(self.pos_frame, text=berechnung.eur_kurz(pos["preis"]), anchor="e",
style=zeilenstil).grid(row=r, column=5, padx=0, pady=3, sticky="ew", ipady=2)
g = ttk.Label(self.pos_frame, text="0,00", anchor="e", style=zeilenstil)
g.grid(row=r, column=6, padx=0, pady=3, sticky="ew", ipady=2)
row=r, column=4, padx=6, pady=4)
zelle(berechnung.eur_kurz(pos["preis"]), 5, anker="e")
g = zelle("0,00", 6, anker="e")
self.gesamt_lbls[nr] = g
# ------------------------------------------------------------ Montage

View file

@ -128,7 +128,7 @@ class ThemeMixin:
self.col_line = "#25282e"
self.col_scroll = "#2f333a"
self.col_muted = "#8a8e96"
self.col_zebra = "#1b1e24" # jede zweite Zeile der Liste
self.col_zebra = "#232830" # jede zweite Zeile der Liste
else:
self.col_bg = "#eef0f3"
self.col_card = "#ffffff"
@ -142,7 +142,7 @@ class ThemeMixin:
self.col_line = "#d8dce1"
self.col_scroll = "#c2c6cc"
self.col_muted = "#5c626b"
self.col_zebra = "#e9ecf0"
self.col_zebra = "#e4e8ee"
self.configure(bg=self.col_bg)
style = ttk.Style(self)