Untitled
unknown
plain_text
a year ago
4.8 kB
4
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