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")
|
||||
self.store = store
|
||||
|
||||
# Scrollable container for all content
|
||||
self._scroll = ctk.CTkScrollableFrame(self, fg_color="transparent")
|
||||
self._scroll.pack(fill="both", expand=True)
|
||||
|
||||
# Header
|
||||
self.header_label = ctk.CTkLabel(
|
||||
self, text=t("claude_integration"),
|
||||
self._scroll, text=t("claude_integration"),
|
||||
font=ctk.CTkFont(size=20, weight="bold")
|
||||
)
|
||||
self.header_label.pack(padx=20, pady=(20, 5))
|
||||
|
||||
self.desc_label = ctk.CTkLabel(
|
||||
self, text=t("claude_desc"),
|
||||
self._scroll, text=t("claude_desc"),
|
||||
text_color="#9ca3af", justify="center"
|
||||
)
|
||||
self.desc_label.pack(padx=20, pady=(0, 15))
|
||||
|
||||
# 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_title = ctk.CTkLabel(
|
||||
@@ -62,7 +66,7 @@ class SetupTab(ctk.CTkFrame):
|
||||
self._status_text_labels[key] = (text_label, i18n_key)
|
||||
|
||||
# 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)
|
||||
|
||||
self.install_all_btn = ctk.CTkButton(
|
||||
@@ -91,7 +95,7 @@ class SetupTab(ctk.CTkFrame):
|
||||
self.refresh_btn.pack(side="right")
|
||||
|
||||
# ── Monitoring section ─────────────────────────
|
||||
monitor_frame = ctk.CTkFrame(self)
|
||||
monitor_frame = ctk.CTkFrame(self._scroll)
|
||||
monitor_frame.pack(fill="x", padx=20, pady=(5, 5))
|
||||
|
||||
self.monitor_title = ctk.CTkLabel(
|
||||
@@ -120,7 +124,7 @@ class SetupTab(ctk.CTkFrame):
|
||||
self._interval_buttons[seconds] = btn
|
||||
|
||||
# ── Configuration section ─────────────────────
|
||||
config_frame = ctk.CTkFrame(self)
|
||||
config_frame = ctk.CTkFrame(self._scroll)
|
||||
config_frame.pack(fill="x", padx=20, pady=(5, 5))
|
||||
|
||||
self.config_title = ctk.CTkLabel(
|
||||
@@ -201,8 +205,8 @@ class SetupTab(ctk.CTkFrame):
|
||||
self.import_backup_btn.pack(side="left", padx=5)
|
||||
|
||||
# Log
|
||||
self.log = ctk.CTkTextbox(self, 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 = ctk.CTkTextbox(self._scroll, height=150, font=ctk.CTkFont(family="Consolas", size=11), state="disabled")
|
||||
self.log.pack(fill="x", padx=20, pady=(5, 20))
|
||||
|
||||
# Initial status check
|
||||
self._refresh_status()
|
||||
|
||||
Reference in New Issue
Block a user