Untitled
unknown
plain_text
a year ago
3.8 kB
12
Indexable
class WasteAlertScreen(ctk.CTkToplevel):
def __init__(self, parent, waste_type: str, color: str, dark_mode: bool, progress_circle=None, language='EN'):
super().__init__(parent)
self.waste_type = waste_type
self.language = language
self.progress_circle = progress_circle
# Make it fullscreen and disable all close operations
self.overrideredirect(True)
self.geometry(f"{self.winfo_screenwidth()}x{self.winfo_screenheight()}+0+0")
self.protocol("WM_DELETE_WINDOW", lambda: None)
self.attributes('-topmost', True)
# Set background color based on dark mode
bg_color = '#1c1c1e' if dark_mode else '#f5f5f7'
self.configure(fg_color=bg_color)
# Create main container with padding
self.container = ctk.CTkFrame(
self,
fg_color=bg_color,
corner_radius=0
)
self.container.pack(fill='both', expand=True, padx=40, pady=40)
# Create colored alert box
self.alert_box = ctk.CTkFrame(
self.container,
fg_color=color,
corner_radius=20
)
self.alert_box.pack(fill='both', expand=True)
# Determine text color based on waste type and dark mode
text_color = '#000000' if waste_type in ["Gelber Sack", "Recycling"] and dark_mode else ('#ffffff' if dark_mode else '#000000')
# Get the translated waste type name
translated_waste_type = waste_type
# Reverse lookup the original German key for the waste type
for de_key, en_value in TRANSLATIONS['EN'].items():
if en_value == waste_type and de_key in TRANSLATIONS['DE']:
translated_waste_type = TRANSLATIONS[language][de_key]
break
# Add the message label with correct translation
message_text = TRANSLATIONS[language]['bin_full_message'].format(waste_type=translated_waste_type)
self.message_label = ctk.CTkLabel(
self.alert_box,
text=message_text,
font=('Dongle', 32),
text_color=text_color
)
self.message_label.place(relx=0.5, rely=0.35, anchor='center')
try:
# Determine which icon to use based on background color brightness
# For yellow/light backgrounds use black icon, for dark backgrounds use white icon
is_light_bg = waste_type in ["Gelber Sack", "Recycling"] or not dark_mode
icon_suffix = "-b" if is_light_bg else "-w"
icon_image = ctk.CTkImage(
light_image=Image.open(f"icons/circle-alert{icon_suffix}.png"),
dark_image=Image.open(f"icons/circle-alert{icon_suffix}.png"),
size=(72, 72)
)
self.icon_button = ctk.CTkButton(
self.alert_box,
image=icon_image,
text="",
width=60,
height=60,
fg_color="transparent",
hover_color=color,
command=self.handle_empty_bin
)
self.icon_button.place(relx=0.5, rely=0.65, anchor='center')
except Exception as e:
print(f"Error loading icon: {e}")
self.icon_button = ctk.CTkButton(
self.alert_box,
text="?",
width=60,
height=60,
fg_color="transparent",
hover_color=color,
command=self.handle_empty_bin
)
self.icon_button.place(relx=0.5, rely=0.65, anchor='center')Editor is loading...
Leave a Comment