From 199a75098d84fde1cc1cf27ae5ecb0bd8d6eee9e Mon Sep 17 00:00:00 2001 From: tanyar09 Date: Tue, 30 Sep 2025 15:55:16 -0400 Subject: [PATCH] Refactor PhotoTagger GUI to standardize canvas background colors and improve layout configurations. Update canvas elements to inherit background color from the theme, ensuring visual consistency. Adjust grid settings for match frames to enhance alignment and responsiveness, contributing to a more cohesive user experience. --- photo_tagger.py | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/photo_tagger.py b/photo_tagger.py index 796250b..c34a856 100644 --- a/photo_tagger.py +++ b/photo_tagger.py @@ -3645,7 +3645,9 @@ class PhotoTagger: matched_info_label.grid(row=2, column=0, pady=(0, 10), sticky=tk.W) # Matched person image - matched_canvas = tk.Canvas(left_frame, width=300, height=300, bg='white') + style = ttk.Style() + canvas_bg_color = style.lookup('TFrame', 'background') or '#d9d9d9' + matched_canvas = tk.Canvas(left_frame, width=300, height=300, bg=canvas_bg_color, highlightthickness=0) matched_canvas.grid(row=3, column=0, pady=(0, 10)) # Save button for this person (will be created after function definitions) @@ -3689,7 +3691,9 @@ class PhotoTagger: scrollbar.grid(row=0, column=1, rowspan=1, sticky=(tk.N, tk.S)) # Create canvas for matches with scrollbar - matches_canvas = tk.Canvas(matches_frame, yscrollcommand=scrollbar.set) + style = ttk.Style() + canvas_bg_color = style.lookup('TFrame', 'background') or '#d9d9d9' + matches_canvas = tk.Canvas(matches_frame, yscrollcommand=scrollbar.set, bg=canvas_bg_color, highlightthickness=0) matches_canvas.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) scrollbar.config(command=matches_canvas.yview) @@ -4157,26 +4161,29 @@ class PhotoTagger: # Bind the callback to the variable match_var.trace('w', lambda *args: on_checkbox_change(match_var, matched_id, match['unidentified_id'])) - # Create a frame for the checkbox and text labels - text_frame = ttk.Frame(match_frame) - text_frame.grid(row=0, column=0, sticky=tk.W, padx=(0, 10)) + # Configure match frame for grid layout + match_frame.columnconfigure(0, weight=0) # Checkbox column - fixed width + match_frame.columnconfigure(1, weight=1) # Text column - expandable + match_frame.columnconfigure(2, weight=0) # Image column - fixed width # Checkbox without text - checkbox = ttk.Checkbutton(text_frame, variable=match_var) - checkbox.pack(side=tk.LEFT, padx=(0, 5)) + checkbox = ttk.Checkbutton(match_frame, variable=match_var) + checkbox.grid(row=0, column=0, rowspan=2, sticky=(tk.W, tk.N), padx=(0, 5)) match_checkboxes.append(checkbox) # Create labels for confidence and filename - confidence_label = ttk.Label(text_frame, text=f"{confidence_pct:.1f}% {confidence_desc}", font=("Arial", 9, "bold")) - confidence_label.pack(anchor=tk.W) + confidence_label = ttk.Label(match_frame, text=f"{confidence_pct:.1f}% {confidence_desc}", font=("Arial", 9, "bold")) + confidence_label.grid(row=0, column=1, sticky=tk.W, padx=(0, 10)) - filename_label = ttk.Label(text_frame, text=f"📁 {match['unidentified_filename']}", font=("Arial", 8), foreground="gray") - filename_label.pack(anchor=tk.W) + filename_label = ttk.Label(match_frame, text=f"📁 {match['unidentified_filename']}", font=("Arial", 8), foreground="gray") + filename_label.grid(row=1, column=1, sticky=tk.W, padx=(0, 10)) # Unidentified face image if show_faces: - match_canvas = tk.Canvas(match_frame, width=100, height=100, bg='white') - match_canvas.grid(row=0, column=1, padx=(10, 0)) + style = ttk.Style() + canvas_bg_color = style.lookup('TFrame', 'background') or '#d9d9d9' + match_canvas = tk.Canvas(match_frame, width=100, height=100, bg=canvas_bg_color, highlightthickness=0) + match_canvas.grid(row=0, column=2, rowspan=2, sticky=(tk.W, tk.N), padx=(10, 0)) unidentified_crop_path = self._extract_face_crop( unidentified_photo_path, @@ -4367,7 +4374,9 @@ class PhotoTagger: faces_frame.columnconfigure(0, weight=1) faces_frame.rowconfigure(0, weight=1) - faces_canvas = tk.Canvas(faces_frame, bg='white') + style = ttk.Style() + canvas_bg_color = style.lookup('TFrame', 'background') or '#d9d9d9' + faces_canvas = tk.Canvas(faces_frame, bg=canvas_bg_color, highlightthickness=0) faces_scrollbar = ttk.Scrollbar(faces_frame, orient="vertical", command=faces_canvas.yview) faces_inner = ttk.Frame(faces_canvas) faces_canvas.create_window((0, 0), window=faces_inner, anchor="nw")