Create the clickable header.
(self)
| 70 | self._update_header_text() |
| 71 | |
| 72 | def _create_header(self) -> None: |
| 73 | """Create the clickable header.""" |
| 74 | self._header_frame = ctk.CTkFrame( |
| 75 | self, |
| 76 | fg_color="transparent", |
| 77 | cursor="hand2", |
| 78 | ) |
| 79 | self._header_frame.grid(row=0, column=0, sticky="ew", padx=10, pady=10) |
| 80 | self._header_frame.grid_columnconfigure(1, weight=1) |
| 81 | |
| 82 | # Expand/collapse indicator and title |
| 83 | self._header_label = ctk.CTkLabel( |
| 84 | self._header_frame, |
| 85 | text="", |
| 86 | font=ctk.CTkFont( |
| 87 | family=FONTS["family"], size=FONTS["size_large"], weight="bold" |
| 88 | ), |
| 89 | text_color=COLORS["accent"], |
| 90 | cursor="hand2", |
| 91 | ) |
| 92 | self._header_label.grid(row=0, column=0, sticky="w") |
| 93 | |
| 94 | # Bind click events |
| 95 | self._header_frame.bind("<Button-1>", self._toggle) |
| 96 | self._header_label.bind("<Button-1>", self._toggle) |
| 97 | |
| 98 | def _update_header_text(self) -> None: |
| 99 | """Update header text based on expanded state.""" |