Untitled

 avatar
unknown
plain_text
2 months ago
3.1 kB
3
Indexable
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