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:
parent
1c2b115108
commit
a715d1235b
2 changed files with 36 additions and 22 deletions
54
app.py
54
app.py
|
|
@ -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
|
||||
|
|
|
|||
4
theme.py
4
theme.py
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue