fix: defer grab_set() to avoid 'window not viewable' error
CTkToplevel grab_set() fails when called before the window is fully realized on screen. Defer to after(50ms) so the window has time to become viewable.
This commit is contained in:
+10
-1
@@ -797,9 +797,11 @@ class UartMonitorWindow(ctk.CTkToplevel):
|
||||
self.title("UART Monitor")
|
||||
self.geometry("680x540")
|
||||
self.minsize(480, 360)
|
||||
self.grab_set()
|
||||
self.protocol("WM_DELETE_WINDOW", self._on_close)
|
||||
|
||||
# Defer grab_set until window is viewable (avoids "window not viewable" error)
|
||||
self.after(50, self._do_grab)
|
||||
|
||||
self._port = port
|
||||
self._baudrate = baudrate
|
||||
self._monitor: UartMonitor | None = None
|
||||
@@ -814,6 +816,13 @@ class UartMonitorWindow(ctk.CTkToplevel):
|
||||
# Try to open serial port after window is drawn
|
||||
self.after(100, self._try_open)
|
||||
|
||||
def _do_grab(self) -> None:
|
||||
"""Acquire grab once window is viewable."""
|
||||
try:
|
||||
self.grab_set()
|
||||
except Exception:
|
||||
pass # Window may have been destroyed already
|
||||
|
||||
# ── Title Bar ──────────────────────────────────────────────
|
||||
|
||||
def _build_title_bar(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user