I just build a AI image generator with python and I have this problem where the window open and closes super quickly and doesn't even show the UI at all. I used tkinter for this. I tried some of the videos on the internet and even read the docs, but still found no solution. import tkinter as tk from tkinter import ttk import base64 from PIL import Image, ImageTk from io import BytesIO from .client import StabilityClient from .models import GenerationRequest from .config import GenerationConfig from .exceptions import ImageGenerationError class ImageGeneratorUI: def __init__(self): self.client = StabilityClient(GenerationConfig()) self.setup_ui() def setup_ui(self): self.window = tk.Tk() self.window.title("AI Image Generator") self.window.geometry("800x900") def run (self): tk.Label(self.root, text="Welcome to the Image Generator!").pack() self.root.mainloop() # Main frame main_frame = ttk.Frame(self.window, padding="10") main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S)) # Prompt input ttk.Label(main_frame, text="Image Description:").grid(row=0, column=0, sticky=tk.W) self.prompt = tk.Text(main_frame, height=3, width=60) self.prompt.grid(row=1, column=0, columnspan=2, pady=5) # Negative prompt ttk.Label(main_frame, text="Negative Prompt (what to avoid):").grid(row=2, column=0, sticky=tk.W) self.negative_prompt = tk.Text(main_frame, height=2, width=60) self.negative_prompt.grid(row=3, column=0, columnspan=2, pady=5) # Steps slider ttk.Label(main_frame, text="Steps:").grid(row=4, column=0, sticky=tk.W) self.steps = ttk.Scale(main_frame, from_=10, to=50, orient=tk.HORIZONTAL) self.steps.set(30) self.steps.grid(row=4, column=1, sticky=(tk.W, tk.E), pady=5) # Generate button self.generate_btn = ttk.Button(main_frame, text="Generate Image", command=self.generate_image) self.generate_btn.grid(row=5, column=0, columnspan=2, pady=10) # Status label self.status = ttk.Label(main_frame, text="") self.status.grid(row=6, column=0, columnspan=2) # Image display self.image_label = ttk.Label(main_frame) self.image_label.grid(row=7, column=0, columnspan=2, pady=10) def generate_image(self): self.generate_btn.state(['disabled']) self.status.config(text="Generating image...") self.window.update() try: request = GenerationRequest( prompt=self.prompt.get("1.0", tk.END).strip(), negative_prompt=self.negative_prompt.get("1.0", tk.END).strip() or None, steps=int(self.steps.get()) ) response = self.client.generate_image(request) # Display the generated image image_data = base64.b64decode(response.base64_image) image = Image.open(BytesIO(image_data)) photo = ImageTk.PhotoImage(image) self.image_label.config(image=photo) self.image_label.image = photo # Keep a reference self.status.config(text="Image generated successfully!") except ImageGenerationError as e: self.status.config(text=f"Error: {str(e)}") except Exception as e: self.status.config(text=f"Unexpected error: {str(e)}") finally: self.generate_btn.state(['!disabled']) def run(self): self.window.mainloop() Continue reading...