@ -151,6 +151,7 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
root . configure ( )
root . protocol ( " WM_DELETE_WINDOW " , lambda : destroy ( ) )
# Image Selection Area (Top)
source_label = ctk . CTkLabel ( root , text = None )
source_label . place ( relx = 0.1 , rely = 0.1 , relwidth = 0.3 , relheight = 0.25 )
@ -175,58 +176,7 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
)
select_target_button . place ( relx = 0.6 , rely = 0.4 , relwidth = 0.3 , relheight = 0.1 )
keep_fps_value = ctk . BooleanVar ( value = modules . globals . keep_fps )
keep_fps_checkbox = ctk . CTkSwitch (
root ,
text = _ ( " Keep fps " ) ,
variable = keep_fps_value ,
cursor = " hand2 " ,
command = lambda : (
setattr ( modules . globals , " keep_fps " , keep_fps_value . get ( ) ) ,
save_switch_states ( ) ,
) ,
)
keep_fps_checkbox . place ( relx = 0.1 , rely = 0.6 )
keep_frames_value = ctk . BooleanVar ( value = modules . globals . keep_frames )
keep_frames_switch = ctk . CTkSwitch (
root ,
text = _ ( " Keep frames " ) ,
variable = keep_frames_value ,
cursor = " hand2 " ,
command = lambda : (
setattr ( modules . globals , " keep_frames " , keep_frames_value . get ( ) ) ,
save_switch_states ( ) ,
) ,
)
keep_frames_switch . place ( relx = 0.1 , rely = 0.65 )
enhancer_value = ctk . BooleanVar ( value = modules . globals . fp_ui [ " face_enhancer " ] )
enhancer_switch = ctk . CTkSwitch (
root ,
text = _ ( " Face Enhancer " ) ,
variable = enhancer_value ,
cursor = " hand2 " ,
command = lambda : (
update_tumbler ( " face_enhancer " , enhancer_value . get ( ) ) ,
save_switch_states ( ) ,
) ,
)
enhancer_switch . place ( relx = 0.1 , rely = 0.7 )
keep_audio_value = ctk . BooleanVar ( value = modules . globals . keep_audio )
keep_audio_switch = ctk . CTkSwitch (
root ,
text = _ ( " Keep audio " ) ,
variable = keep_audio_value ,
cursor = " hand2 " ,
command = lambda : (
setattr ( modules . globals , " keep_audio " , keep_audio_value . get ( ) ) ,
save_switch_states ( ) ,
) ,
)
keep_audio_switch . place ( relx = 0.6 , rely = 0.6 )
# Face Processing Options (Middle Left)
many_faces_value = ctk . BooleanVar ( value = modules . globals . many_faces )
many_faces_switch = ctk . CTkSwitch (
root ,
@ -238,24 +188,7 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
save_switch_states ( ) ,
) ,
)
many_faces_switch . place ( relx = 0.6 , rely = 0.65 )
color_correction_value = ctk . BooleanVar ( value = modules . globals . color_correction )
color_correction_switch = ctk . CTkSwitch (
root ,
text = _ ( " Fix Blueish Cam " ) ,
variable = color_correction_value ,
cursor = " hand2 " ,
command = lambda : (
setattr ( modules . globals , " color_correction " , color_correction_value . get ( ) ) ,
save_switch_states ( ) ,
) ,
)
color_correction_switch . place ( relx = 0.6 , rely = 0.70 )
# nsfw_value = ctk.BooleanVar(value=modules.globals.nsfw_filter)
# nsfw_switch = ctk.CTkSwitch(root, text='NSFW filter', variable=nsfw_value, cursor='hand2', command=lambda: setattr(modules.globals, 'nsfw_filter', nsfw_value.get()))
# nsfw_switch.place(relx=0.6, rely=0.7)
many_faces_switch . place ( relx = 0.1 , rely = 0.55 )
map_faces = ctk . BooleanVar ( value = modules . globals . map_faces )
map_faces_switch = ctk . CTkSwitch (
@ -269,21 +202,22 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
close_mapper_window ( ) if not map_faces . get ( ) else None
) ,
)
map_faces_switch . place ( relx = 0.1 , rely = 0. 75 )
map_faces_switch . place ( relx = 0.1 , rely = 0. 6 )
show_fps _value = ctk . BooleanVar ( value = modules . globals . show_fps )
show_fps _switch = ctk . CTkSwitch (
enhancer _value = ctk . BooleanVar ( value = modules . globals . fp_ui[ " face_enhancer " ] )
enhancer _switch = ctk . CTkSwitch (
root ,
text = _ ( " Show FPS " ) ,
variable = show_fps _value,
text = _ ( " Face Enhancer " ) ,
variable = enhancer _value,
cursor = " hand2 " ,
command = lambda : (
setattr ( modules . globals , " show_fps " , show_fps _value. get ( ) ) ,
update_tumbler ( " face_enhancer " , enhancer _value. get ( ) ) ,
save_switch_states ( ) ,
) ,
)
show_fps_switch. place ( relx = 0.6 , rely = 0.7 5)
enhancer_switch. place ( relx = 0.1 , rely = 0.6 5)
# Additional Options (Middle Right)
mouth_mask_var = ctk . BooleanVar ( value = modules . globals . mouth_mask )
mouth_mask_switch = ctk . CTkSwitch (
root ,
@ -292,7 +226,7 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
cursor = " hand2 " ,
command = lambda : setattr ( modules . globals , " mouth_mask " , mouth_mask_var . get ( ) ) ,
)
mouth_mask_switch . place ( relx = 0. 1 , rely = 0.55 )
mouth_mask_switch . place ( relx = 0. 6 , rely = 0.55 )
show_mouth_mask_box_var = ctk . BooleanVar ( value = modules . globals . show_mouth_mask_box )
show_mouth_mask_box_switch = ctk . CTkSwitch (
@ -304,26 +238,40 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
modules . globals , " show_mouth_mask_box " , show_mouth_mask_box_var . get ( )
) ,
)
show_mouth_mask_box_switch . place ( relx = 0.6 , rely = 0. 55 )
show_mouth_mask_box_switch . place ( relx = 0.6 , rely = 0. 6 )
start_button = ctk . CTkButton (
root , text = _ ( " Start " ) , cursor = " hand2 " , command = lambda : analyze_target ( start , root )
keep_audio_value = ctk . BooleanVar ( value = modules . globals . keep_audio )
keep_audio_switch = ctk . CTkSwitch (
root ,
text = _ ( " Keep audio " ) ,
variable = keep_audio_value ,
cursor = " hand2 " ,
command = lambda : (
setattr ( modules . globals , " keep_audio " , keep_audio_value . get ( ) ) ,
save_switch_states ( ) ,
) ,
)
start_button . place ( relx = 0.15 , rely = 0.80 , relwidth = 0.2 , relheight = 0.05 )
keep_audio_switch. place ( relx = 0.6 , rely = 0.6 5)
stop_button = ctk . CTkButton (
root , text = _ ( " Destroy " ) , cursor = " hand2 " , command = lambda : destroy ( )
# Main Control Buttons (Bottom)
start_button = ctk . CTkButton (
root , text = _ ( " Start " ) , cursor = " hand2 " , command = lambda : analyze_target ( start , root )
)
stop_button . place ( relx = 0.4 , rely = 0.80 , relwidth = 0.2 , relheight = 0.05 )
st art_button. place ( relx = 0.15 , rely = 0.75 , relwidth = 0.2 , relheight = 0.05 )
preview_button = ctk . CTkButton (
root , text = _ ( " Preview " ) , cursor = " hand2 " , command = lambda : toggle_preview ( )
)
preview_button . place ( relx = 0.65 , rely = 0.80 , relwidth = 0.2 , relheight = 0.05 )
preview_button . place ( relx = 0.4 , rely = 0.75 , relwidth = 0.2 , relheight = 0.05 )
stop_button = ctk . CTkButton (
root , text = _ ( " Destroy " ) , cursor = " hand2 " , command = lambda : destroy ( )
)
stop_button . place ( relx = 0.65 , rely = 0.75 , relwidth = 0.2 , relheight = 0.05 )
# --- Camera Selection ---
# Camera Section (Bottom)
camera_label = ctk . CTkLabel ( root , text = _ ( " Select Camera: " ) )
camera_label . place ( relx = 0.1 , rely = 0.86 , relwidth = 0.2 , relheight = 0.05 )
camera_label . place ( relx = 0.1 , rely = 0.8 5 , relwidth = 0.2 , relheight = 0.05 )
available_cameras = get_available_cameras ( )
camera_indices , camera_names = available_cameras
@ -342,7 +290,7 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
root , variable = camera_variable , values = camera_names
)
camera_optionmenu . place ( relx = 0.35 , rely = 0.8 6 , relwidth = 0.25 , relheight = 0.05 )
camera_optionmenu . place ( relx = 0.35 , rely = 0.8 5 , relwidth = 0.25 , relheight = 0.05 )
live_button = ctk . CTkButton (
root ,
@ -362,11 +310,11 @@ def create_root(start: Callable[[], None], destroy: Callable[[], None]) -> ctk.C
else " disabled "
) ,
)
live_button . place ( relx = 0.65 , rely = 0.86 , relwidth = 0.2 , relheight = 0.05 )
# --- End Camera Selection ---
live_button . place ( relx = 0.65 , rely = 0.85 , relwidth = 0.2 , relheight = 0.05 )
# Status and Links (Bottom)
status_label = ctk . CTkLabel ( root , text = None , justify = " center " )
status_label . place ( relx = 0.1 , rely = 0.9 , relwidth = 0.8 )
status_label . place ( relx = 0.1 , rely = 0.9 2 , relwidth = 0.8 )
donate_label = ctk . CTkLabel (
root , text = " Deep Live Cam " , justify = " center " , cursor = " hand2 "