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")