Erprobungshinweis: erst wenn das Fenster steht, und nach vorn geholt
Sein Befund: "die software haengt nun am dialog popup" - und gleich darauf: "haengen tut er nicht, nur deine pruefung; wenn ich auf aktiv druecke, geht es". Zwei getrennte Fehler, beide meine: 1. Der Hinweis lief an after(0). Da ist das Hauptfenster noch nicht gezeichnet - ein modaler Dialog daran wirkt eingefroren. Eine feste Wartezeit (150 ms) war aber auch falsch: die erreicht ein Pruefstand nie, der keine Ereignisschleife dreht, und pruef_api lief danach in die Zeitgrenze. Jetzt after_idle: laeuft, sobald Tk nichts mehr zu zeichnen hat - fuer den Nutzer nach dem Zeichnen, fuer den Pruefstand beim ersten update(). 2. Der Dialog kam nicht nach vorn. Ein Hinweis, den man erst suchen muss, taugt nichts. theme.py holt das Meldungsfenster jetzt nach vorn und nimmt den Tastaturfokus (lift, kurz topmost, focus_force). In der Aufgabenliste vermerkt: Updater als Starter (Schritt 4, mit den zwei fehlenden Voraussetzungen Versionsnummer und Sichtbarkeit der Repositories), Pcore-Design im Steuerrechnungstool (Schritt 5), und der ALTFEHLER in pruef_wache - schon vor den heutigen Arbeiten rot, die Statuszeile wird vom Ergebnis des Einlesens ueberschrieben. Alle 17 Pruefstaende des Rechnungstools gruen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
This commit is contained in:
parent
4cdc286d5b
commit
05ec56e4b8
3 changed files with 74 additions and 4 deletions
10
app.py
10
app.py
|
|
@ -118,10 +118,11 @@ class RechnungsApp(ThemeMixin, MeldungMixin, KorrekturMixin, EinstellungenMixin,
|
|||
# es morgen ohne berichtigte Rechnung im Ordner und keiner weiss warum.
|
||||
self.protocol("WM_DELETE_WINDOW", self._beenden)
|
||||
|
||||
# NICHTS laeuft an, bevor der Erprobungshinweis bestaetigt ist. Wer ihn
|
||||
# ablehnt, soll gar nicht erst arbeiten koennen - und es soll auch kein
|
||||
# halb gestartetes Programm hinter dem Fenster stehenbleiben.
|
||||
self.after(0, self._hinweis_pruefen)
|
||||
# after_idle statt after(0): laeuft, sobald Tk nichts mehr zu zeichnen hat -
|
||||
# also nachdem das Hauptfenster steht. Bei after(0) haengt der modale Dialog
|
||||
# an einem noch ungezeichneten Fenster und wirkt wie eingefroren; eine feste
|
||||
# Wartezeit dagegen erreicht ein Pruefstand nie, der keine Schleife dreht.
|
||||
self.after_idle(self._hinweis_pruefen)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- Menue
|
||||
|
|
@ -650,6 +651,7 @@ class RechnungsApp(ThemeMixin, MeldungMixin, KorrekturMixin, EinstellungenMixin,
|
|||
stuenden beim Ablehnen noch Timer in der Warteschlange, die auf ein
|
||||
Fenster zugreifen, das es nicht mehr gibt.
|
||||
"""
|
||||
self.update_idletasks() # Fenster fertig zeichnen lassen
|
||||
if not hinweis.angenommen(self.cfg):
|
||||
print(f"[hinweis] Kenntnisnahme noch offen (Fassung {hinweis.FASSUNG})")
|
||||
if not self.frage(hinweis.TITEL, hinweis.text("rechnungstool"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue