Untitled
import customtkinter as ctk from PIL import Image, ImageTk import time import threading class LoadingScreen(ctk.CTkToplevel): def __init__(self, parent, message="", dark_mode=False, language='EN'): super().__init__(parent) # Make it fullscreen self.overrideredirect(True) self.geometry("800x600") # Smaller size for testing # Set colors based on dark mode self.bg_color = '#1c1c1e' if dark_mode else '#f5f5f7' self.text_color = 'white' if dark_mode else 'black' self.configure(fg_color=self.bg_color) # Create main container self.container = ctk.CTkFrame( self, fg_color=self.bg_color, corner_radius=0 ) self.container.pack(fill="both", expand=True) # Create content frame for centering self.content_frame = ctk.CTkFrame( self.container, fg_color="transparent" ) self.content_frame.place(relx=0.5, rely=0.5, anchor="center") # Create test animation (simple rotating label) self.loading_label = ctk.CTkLabel( self.content_frame, text="↻", font=("Arial", 48), text_color=self.text_color ) self.loading_label.pack(pady=20) # Message label self.message_label = ctk.CTkLabel( self.content_frame, text=message, font=("Arial", 24), text_color=self.text_color ) self.message_label.pack() # Start rotation animation self.rotation = 0 self.animate() def animate(self): """Simple rotation animation for testing""" self.rotation = (self.rotation + 10) % 360 self.loading_label.configure(text=f"↻") self.after(50, self.animate) def update_message(self, new_message): """Update the message text""" self.message_label.configure(text=new_message) def test_loading_screen(): root = ctk.CTk() root.geometry("1024x600") # Test controls controls_frame = ctk.CTkFrame(root) controls_frame.pack(pady=20) dark_mode_var = ctk.BooleanVar(value=False) def show_loading(): loading = LoadingScreen( root, message="Test Loading...", dark_mode=dark_mode_var.get() ) # Auto-close after 3 seconds root.after(3000, loading.destroy) # Dark mode toggle ctk.CTkSwitch( controls_frame, text="Dark Mode", variable=dark_mode_var, onvalue=True, offvalue=False ).pack(pady=10) # Show loading screen button ctk.CTkButton( controls_frame, text="Show Loading Screen", command=show_loading ).pack(pady=10) root.mainloop() if __name__ == "__main__": test_loading_screen()
Leave a Comment