Untitled

 avatar
unknown
plain_text
6 months ago
4.8 kB
3
Indexable
import customtkinter as ctk
from PIL import Image
import os

class SettingsMenu:
    def __init__(self, master):
        self.master = master
        self.master.geometry("1024x600")
        self.master.title("Modern Settings")
        
        # Hauptcontainer
        self.main_frame = ctk.CTkFrame(master)
        self.main_frame.pack(fill="both", expand=True)
        
        # Settings Icon erstellen (oben rechts)
        self.settings_button = ctk.CTkButton(
            self.main_frame,
            text="⚙️",
            width=40,
            height=40,
            command=self.toggle_settings,
            fg_color="transparent",
            hover_color=("gray75", "gray25")
        )
        self.settings_button.pack(anchor="ne", padx=20, pady=20)
        
        # Settings Panel (initial versteckt)
        self.settings_panel = None
        self.settings_visible = False
        
    def toggle_settings(self):
        if self.settings_visible:
            self.hide_settings()
        else:
            self.show_settings()
    
    def show_settings(self):
        # Hauptinhalt ausblenden
        for widget in self.main_frame.winfo_children():
            if widget != self.settings_button:
                widget.pack_forget()
        
        # Settings Panel erstellen
        self.settings_panel = ctk.CTkFrame(self.main_frame)
        self.settings_panel.pack(fill="both", expand=True, padx=20, pady=(0, 20))
        
        # Überschrift
        title = ctk.CTkLabel(
            self.settings_panel,
            text="Einstellungen",
            font=ctk.CTkFont(size=24, weight="bold")
        )
        title.pack(pady=20)
        
        # Einstellungskategorien
        categories = ["Erscheinungsbild", "Audio", "Display", "System"]
        
        for category in categories:
            category_frame = self.create_category_frame(category)
            category_frame.pack(fill="x", padx=20, pady=10)
        
        self.settings_visible = True
    
    def create_category_frame(self, category):
        frame = ctk.CTkFrame(self.settings_panel)
        
        # Kategorie-Header
        header = ctk.CTkButton(
            frame,
            text=category,
            anchor="w",
            fg_color="transparent",
            hover_color=("gray75", "gray25"),
            command=lambda c=category: self.toggle_category(c, frame)
        )
        header.pack(fill="x", padx=10, pady=5)
        
        # Beispiel-Einstellungen für jede Kategorie
        if category == "Erscheinungsbild":
            self.add_appearance_settings(frame)
        elif category == "Audio":
            self.add_audio_settings(frame)
        elif category == "Display":
            self.add_display_settings(frame)
        elif category == "System":
            self.add_system_settings(frame)
            
        return frame
    
    def add_appearance_settings(self, frame):
        # Theme Switcher
        theme_frame = ctk.CTkFrame(frame)
        theme_frame.pack(fill="x", padx=20, pady=5)
        
        theme_label = ctk.CTkLabel(theme_frame, text="Theme")
        theme_label.pack(side="left", padx=5)
        
        theme_switch = ctk.CTkSwitch(theme_frame, text="Dark Mode")
        theme_switch.pack(side="right", padx=5)
        
    def add_audio_settings(self, frame):
        # Volume Slider
        volume_frame = ctk.CTkFrame(frame)
        volume_frame.pack(fill="x", padx=20, pady=5)
        
        volume_label = ctk.CTkLabel(volume_frame, text="Lautstärke")
        volume_label.pack(side="left", padx=5)
        
        volume_slider = ctk.CTkSlider(volume_frame)
        volume_slider.pack(side="right", padx=5, expand=True)
        
    def add_display_settings(self, frame):
        # Brightness Slider
        brightness_frame = ctk.CTkFrame(frame)
        brightness_frame.pack(fill="x", padx=20, pady=5)
        
        brightness_label = ctk.CTkLabel(brightness_frame, text="Helligkeit")
        brightness_label.pack(side="left", padx=5)
        
        brightness_slider = ctk.CTkSlider(brightness_frame)
        brightness_slider.pack(side="right", padx=5, expand=True)
        
    def add_system_settings(self, frame):
        # Update Button
        update_button = ctk.CTkButton(
            frame,
            text="Nach Updates suchen",
            fg_color="transparent",
            border_width=1
        )
        update_button.pack(padx=20, pady=5)
        
    def hide_settings(self):
        if self.settings_panel:
            self.settings_panel.destroy()
            self.settings_visible = False

if __name__ == "__main__":
    app = ctk.CTk()
    settings_menu = SettingsMenu(app)
    app.mainloop()
Editor is loading...
Leave a Comment