import customtkinter as ctk import winreg import subprocess import sys import os # Registry-Pfad definieren REG_PATH = r"Software\PDFExporter" def read_registry_value(name): try: key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, REG_PATH, 0, winreg.KEY_READ) value, _ = winreg.QueryValueEx(key, name) winreg.CloseKey(key) return value except FileNotFoundError: return None def write_registry_value(name, value): try: key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, REG_PATH) winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value) winreg.CloseKey(key) except Exception as e: print(f"Fehler beim Schreiben in Registry: {e}") # def config_exists(): # return read_registry_value("APIKey") is not None def save_config_and_close(api_entry, server_entry, label_entry, order_entry, app): write_registry_value("APIKey", api_entry.get()) write_registry_value("Server", server_entry.get()) write_registry_value("LabelPrinter", label_entry.get()) write_registry_value("OrderPrinter", order_entry.get()) app.destroy() def show_config_gui(): ctk.set_appearance_mode("System") ctk.set_default_color_theme("blue") app = ctk.CTk() app.title("Erstkonfiguration") window_width = 400 window_height = 400 # Bildschirmgröße ermitteln screen_width = app.winfo_screenwidth() screen_height = app.winfo_screenheight() # Position zum Zentrieren berechnen x = int((screen_width / 2) - (window_width / 2)) y = int((screen_height / 2) - (window_height / 2)) app.geometry(f"{window_width}x{window_height}+{x}+{y}") frame = ctk.CTkFrame(master=app) frame.pack(pady=20, padx=20, fill="both", expand=True) # Vorhandene Werte aus der Registry lesen existing_api = read_registry_value("APIKey") or "" existing_server = read_registry_value("Server") or "" existing_label = read_registry_value("LabelPrinter") or "" existing_order = read_registry_value("OrderPrinter") or "" api_label = ctk.CTkLabel(master=frame, text="API Key:") api_label.pack(pady=5) api_entry = ctk.CTkEntry(master=frame, width=300) api_entry.insert(0, existing_api) api_entry.pack() server_label = ctk.CTkLabel(master=frame, text="Server:") server_label.pack(pady=5) server_entry = ctk.CTkEntry(master=frame, width=300) server_entry.insert(0, existing_server) server_entry.pack() label_label = ctk.CTkLabel(master=frame, text="Label-Drucker:") label_label.pack(pady=5) label_entry = ctk.CTkEntry(master=frame, width=300) label_entry.insert(0, existing_label) label_entry.pack() order_label = ctk.CTkLabel(master=frame, text="Order-Drucker:") order_label.pack(pady=5) order_entry = ctk.CTkEntry(master=frame, width=300) order_entry.insert(0, existing_order) order_entry.pack() save_button = ctk.CTkButton(master=frame, text="Speichern", command=lambda: save_config_and_close( api_entry, server_entry, label_entry, order_entry, app)) save_button.pack(pady=15) app.mainloop() def start_gui_app(): # gui.py im gleichen Verzeichnis starten script_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "gui.py") subprocess.Popen([sys.executable, script_path]) show_config_gui()