From c332c5a48735ceadedfc1e6d2f424049696c35d4 Mon Sep 17 00:00:00 2001 From: Kerim Atilgan Date: Tue, 3 Nov 2026 14:23:01 +0100 Subject: [PATCH] Programm startet maximiert; Version 1.7.0 Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- provtool/__init__.py | 2 +- provtool/gui/app.py | 3 ++- provtool/gui/rahmen.py | 5 +++++ tests/test_gui.py | 17 +++++++++++++++-- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b92c95c..0970c97 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Welche Provisionsart Airtime bzw. Jahresbonus ist, erkennt das Programm an den T „AirTime Provision“, „Umsatzbeteiligung“, „Jahresbonus“); umstellbar je Provisionsart unter *Händler ▸ Provisionsarten…*. -Das Hauptfenster ist unter Windows ein echtes Programmfenster: an den Bildschirmrand +Das Programm startet maximiert. Das Hauptfenster ist unter Windows ein echtes Programmfenster: an den Bildschirmrand ziehen (Andocken), `Win`+Pfeiltasten, Doppelklick auf die Titelleiste und Ziehen am Rand funktionieren wie gewohnt. diff --git a/provtool/__init__.py b/provtool/__init__.py index 3b32902..4197078 100644 --- a/provtool/__init__.py +++ b/provtool/__init__.py @@ -1,5 +1,5 @@ """Provisions-Manager 95 – Provisionsabrechnung für Unterhändler der Handy-Insel Miesbach.""" -__version__ = "1.6.0" +__version__ = "1.7.0" APP_NAME = "Provisions-Manager 95" APP_ORG = "Handy-Insel Miesbach" diff --git a/provtool/gui/app.py b/provtool/gui/app.py index 7b58907..b185796 100644 --- a/provtool/gui/app.py +++ b/provtool/gui/app.py @@ -96,7 +96,8 @@ class App: griff.pack(side="right", anchor="se") self.status.pack(side="bottom", fill="x") self._tasten() - self.rahmen.geometrie_setzen(self.settings.get("fenster"), self.settings.get("maximiert", False)) + # startet maximiert („vollbild“, abschaltbar nur für Tests); „fenster“ = Größe nach dem Wiederherstellen + self.rahmen.geometrie_setzen(self.settings.get("fenster"), self.settings.get("vollbild", True)) if self.settings.get("trenner"): root.after(200, lambda: self.pw.sash_place(0, int(self.settings["trenner"]), 0)) diff --git a/provtool/gui/rahmen.py b/provtool/gui/rahmen.py index d188ac4..a92d085 100644 --- a/provtool/gui/rahmen.py +++ b/provtool/gui/rahmen.py @@ -414,6 +414,11 @@ class Hauptrahmen: self._nativ_einrichten() if maximiert and self.klassisch: self.root.after(100, self.maximieren) + elif maximiert: # normaler Windows-Rahmen: Windows maximiert selbst + try: + self.root.state("zoomed") + except tk.TclError: + self.root.attributes("-zoomed", True) # Linux/X11 def normale_geometrie(self) -> str: return self._normal_geo if self.maximiert and self._normal_geo else self.root.geometry() diff --git a/tests/test_gui.py b/tests/test_gui.py index 45753bf..a59604c 100644 --- a/tests/test_gui.py +++ b/tests/test_gui.py @@ -29,8 +29,9 @@ class Lauf: def __init__(self, home, einstellungen: dict | None = None): self.home = home - if einstellungen is not None: - (home / "einstellungen.json").write_text(json.dumps(einstellungen), encoding="utf-8") + # Tests starten im normalen Fenster (die App sonst maximiert) + einstellungen = {"vollbild": False} | (einstellungen or {}) + (home / "einstellungen.json").write_text(json.dumps(einstellungen), encoding="utf-8") self.root = None for versuch in range(3): try: @@ -1192,3 +1193,15 @@ def test_filter_kennzahlen_und_hell_dunkel(lauf_modern): lauf.root.update() assert app.neustart and app._beendet assert config.load()["design"] == "dunkel" + + +def test_startet_maximiert(home): + _profil_mit_daten(home) + lauf = Lauf(home, {"assistent_erledigt": True, "tipps_beim_start": False, "vollbild": True, "design": "win95"}) + try: + for _ in range(30): + lauf.root.update() + time.sleep(0.02) + assert lauf.app.rahmen.maximiert, "Programm startet nicht maximiert" + finally: + lauf.ende()