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.

This commit is contained in:
tanyar09 2025-09-30 15:55:16 -04:00
parent 15b7c10056
commit 199a75098d

View File

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