fix: wrap Setup tab in CTkScrollableFrame for small windows
Content was clipped when window height was insufficient. Now all sections are accessible via scroll. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -18,21 +18,25 @@ class SetupTab(ctk.CTkFrame):
|
|||||||
super().__init__(master, fg_color="transparent")
|
super().__init__(master, fg_color="transparent")
|
||||||
self.store = store
|
self.store = store
|
||||||
|
|
||||||
|
# Scrollable container for all content
|
||||||
|
self._scroll = ctk.CTkScrollableFrame(self, fg_color="transparent")
|
||||||
|
self._scroll.pack(fill="both", expand=True)
|
||||||
|
|
||||||
# Header
|
# Header
|
||||||
self.header_label = ctk.CTkLabel(
|
self.header_label = ctk.CTkLabel(
|
||||||
self, text=t("claude_integration"),
|
self._scroll, text=t("claude_integration"),
|
||||||
font=ctk.CTkFont(size=20, weight="bold")
|
font=ctk.CTkFont(size=20, weight="bold")
|
||||||
)
|
)
|
||||||
self.header_label.pack(padx=20, pady=(20, 5))
|
self.header_label.pack(padx=20, pady=(20, 5))
|
||||||
|
|
||||||
self.desc_label = ctk.CTkLabel(
|
self.desc_label = ctk.CTkLabel(
|
||||||
self, text=t("claude_desc"),
|
self._scroll, text=t("claude_desc"),
|
||||||
text_color="#9ca3af", justify="center"
|
text_color="#9ca3af", justify="center"
|
||||||
)
|
)
|
||||||
self.desc_label.pack(padx=20, pady=(0, 15))
|
self.desc_label.pack(padx=20, pady=(0, 15))
|
||||||
|
|
||||||
# Status card
|
# Status card
|
||||||
self.status_frame = ctk.CTkFrame(self)
|
self.status_frame = ctk.CTkFrame(self._scroll)
|
||||||
self.status_frame.pack(fill="x", padx=20, pady=10)
|
self.status_frame.pack(fill="x", padx=20, pady=10)
|
||||||
|
|
||||||
self.status_title = ctk.CTkLabel(
|
self.status_title = ctk.CTkLabel(
|
||||||
@@ -62,7 +66,7 @@ class SetupTab(ctk.CTkFrame):
|
|||||||
self._status_text_labels[key] = (text_label, i18n_key)
|
self._status_text_labels[key] = (text_label, i18n_key)
|
||||||
|
|
||||||
# Buttons
|
# Buttons
|
||||||
btn_frame = ctk.CTkFrame(self, fg_color="transparent")
|
btn_frame = ctk.CTkFrame(self._scroll, fg_color="transparent")
|
||||||
btn_frame.pack(fill="x", padx=20, pady=15)
|
btn_frame.pack(fill="x", padx=20, pady=15)
|
||||||
|
|
||||||
self.install_all_btn = ctk.CTkButton(
|
self.install_all_btn = ctk.CTkButton(
|
||||||
@@ -91,7 +95,7 @@ class SetupTab(ctk.CTkFrame):
|
|||||||
self.refresh_btn.pack(side="right")
|
self.refresh_btn.pack(side="right")
|
||||||
|
|
||||||
# ── Monitoring section ─────────────────────────
|
# ── Monitoring section ─────────────────────────
|
||||||
monitor_frame = ctk.CTkFrame(self)
|
monitor_frame = ctk.CTkFrame(self._scroll)
|
||||||
monitor_frame.pack(fill="x", padx=20, pady=(5, 5))
|
monitor_frame.pack(fill="x", padx=20, pady=(5, 5))
|
||||||
|
|
||||||
self.monitor_title = ctk.CTkLabel(
|
self.monitor_title = ctk.CTkLabel(
|
||||||
@@ -120,7 +124,7 @@ class SetupTab(ctk.CTkFrame):
|
|||||||
self._interval_buttons[seconds] = btn
|
self._interval_buttons[seconds] = btn
|
||||||
|
|
||||||
# ── Configuration section ─────────────────────
|
# ── Configuration section ─────────────────────
|
||||||
config_frame = ctk.CTkFrame(self)
|
config_frame = ctk.CTkFrame(self._scroll)
|
||||||
config_frame.pack(fill="x", padx=20, pady=(5, 5))
|
config_frame.pack(fill="x", padx=20, pady=(5, 5))
|
||||||
|
|
||||||
self.config_title = ctk.CTkLabel(
|
self.config_title = ctk.CTkLabel(
|
||||||
@@ -201,8 +205,8 @@ class SetupTab(ctk.CTkFrame):
|
|||||||
self.import_backup_btn.pack(side="left", padx=5)
|
self.import_backup_btn.pack(side="left", padx=5)
|
||||||
|
|
||||||
# Log
|
# Log
|
||||||
self.log = ctk.CTkTextbox(self, height=150, font=ctk.CTkFont(family="Consolas", size=11), state="disabled")
|
self.log = ctk.CTkTextbox(self._scroll, height=150, font=ctk.CTkFont(family="Consolas", size=11), state="disabled")
|
||||||
self.log.pack(fill="both", expand=True, padx=20, pady=(5, 20))
|
self.log.pack(fill="x", padx=20, pady=(5, 20))
|
||||||
|
|
||||||
# Initial status check
|
# Initial status check
|
||||||
self._refresh_status()
|
self._refresh_status()
|
||||||
|
|||||||
Reference in New Issue
Block a user