import tkinter as tk
from tkinter import ttk
import textwrap
# Define the elements and their options (20 options per element)
elements = {
"Quality": ["High Quality", "8K", "4K", "HDR", "Realistic", "Low Quality", "Blurry", "Sharp", "Digital", "Analog", "Vintage", "Modern", "Futuristic", "Dreamy", "Hyperrealistic", "Impressionistic", "Pop Art", "Surreal", "Oil Painting", "Watercolor"],
"Gender": ["Male", "Female"], # Only Male and Female for Gender
"Number of People": ["1 person", "2 people", "3 people", "4 people", "5 people", "6 people", "7 people", "8 people", "9 people", "10 people", "Group", "Crowd", "Family", "Friends", "Lovers", "Team", "Organization", "Squad", "Club", "Community"],
"Age": ["Infant", "Toddler", "Child", "Teenager", "20s", "30s", "40s", "50s", "60s", "70s", "80s", "Elderly", "Young", "Old", "Minor", "Adult", "Middle-aged", "Senior", "Very Old", "Baby"],
"Appearance": ["Beautiful", "Handsome", "Cute", "Attractive", "Unique", "Ordinary", "Stylish", "Vibrant", "Elegant", "Intense", "Mysterious", "Pure", "Individual", "Neat", "Glamorous", "Simple", "Modest", "Bold", "Gentle", "Cold"],
"Ethnicity": ["Korean", "American", "European", "African", "Asian", "Latin American", "Mixed", "Indigenous", "Middle Eastern", "Australian", "Russian", "Chinese", "Japanese", "Indian", "Brazilian", "Canadian", "Mexican", "German", "French", "Italian"],
"Expression": ["Happy", "Sad", "Angry", "Surprised", "Serious", "Smiling", "Neutral", "Confused", "Excited", "Worried", "Scared", "Calm", "Thoughtful", "Determined", "Playful", "Sarcastic", "Annoyed", "Disappointed", "Hopeful", "Pessimistic"],
"Pose": ["Standing", "Sitting", "Walking", "Running", "Dancing", "Thinking", "Relaxing", "Fighting", "Meditating", "Sleeping", "Reading", "Writing", "Painting", "Cooking", "Playing", "Working", "Traveling", "Exploring", "Observing", "Contemplating"],
"Clothing": ["Suit", "Casual", "Dress", "Uniform", "Traditional", "Sportswear", "Swimsuit", "Cape", "Armor", "Robe", "Jeans", "T-shirt", "Skirt", "Coat", "Hat", "Gloves", "Shoes", "Boots", "Socks", "Underwear"],
"Location": ["City", "Countryside", "Forest", "Beach", "Mountain", "Sky", "Indoor", "Cafe", "School", "Space", "Desert", "Jungle", "Ocean", "River", "Lake", "Park", "Garden", "Museum", "Library", "Temple"],
"Time of Day": ["Day", "Night", "Dawn", "Dusk", "Morning", "Afternoon", "Evening", "Midnight", "Sunrise", "Sunset", "Golden Hour", "Blue Hour", "Twilight", "Noon", "Early Morning", "Late Night", "Rush Hour", "Quiet Time", "High Noon", "Darkness"],
"Weather": ["Sunny", "Cloudy", "Rainy", "Snowy", "Windy", "Stormy", "Foggy", "Rainbow", "Clear", "Overcast", "Drizzling", "Hail", "Blizzard", "Heatwave", "Cold Snap", "Monsoon", "Hurricane", "Typhoon", "Tornado", "Mild"],
"Mood": ["Peaceful", "Energetic", "Dark", "Bright", "Mysterious", "Dreamy", "Quiet", "Tense", "Happy", "Sad", "Romantic", "Scary", "Exciting", "Calm", "Chaotic", "Serene", "Gloomy", "Optimistic", "Pessimistic", "Melancholy"],
"Style": ["Oil Painting", "Watercolor", "Pop Art", "Surrealism", "Impressionism", "Pixel Art", "Cartoon", "Anime", "Realistic", "3D Rendering", "Photorealistic", "Abstract", "Minimalist", "Vintage", "Modern", "Cyberpunk", "Steampunk", "Fantasy", "Sci-Fi", "Gothic"],
"Color": ["Bright", "Dark", "Pastel", "Monochrome", "Red", "Blue", "Green", "Yellow", "Purple", "Gold", "Silver", "Orange", "Pink", "Brown", "Black", "White", "Gray", "Teal", "Magenta", "Cyan"],
"Lighting": ["Soft", "Hard", "Natural", "Artificial", "Backlight", "Sidelight", "Dramatic", "Ambient", "Rim Lighting", "Volumetric Lighting", "Global Illumination", "Ray Tracing", "Studio Lighting", "Candlelight", "Firelight", "Moonlight", "Sunlight", "Neon", "Fluorescent", "Spotlight"],
"Composition": ["Close-up", "Wide Shot", "Panorama", "Symmetry", "Asymmetry", "Eye-level", "High Angle", "Low Angle", "Rule of Thirds", "Leading Lines", "Golden Ratio", "Dutch Angle", "Bird's Eye View", "Worm's Eye View", "Framing", "Depth of Field", "Negative Space", "Dynamic Composition", "Static Composition", "Balanced"],
"Special Effects": ["Light", "Shadow", "Fog", "Dust", "Reflection", "Blur", "Particles", "Lightning", "Glow", "Bloom", "Lens Flare", "Chromatic Aberration", "Vignette", "Distortion", "Glitch", "Noise", "Smoke", "Fire", "Water", "Ice"],
"Entity Type": ["Human", "Animal", "Robot", "Alien", "Virtual Person", "Doll", "Hero", "Villain", "Noble", "Commoner", "Creature", "Monster", "Mythical Being", "Spirit", "Ghost", "Demon", "Angel", "Golem", "Construct", "Automaton"]
}
# Create the main window
root = tk.Tk()
root.title("Image Prompt Generator")
# Dictionary to store selected options
selected_options = {}
# Create a frame for the input fields
frame = ttk.Frame(root, padding=10)
frame.pack()
# Create input fields for each element
for element, options in elements.items():
label = ttk.Label(frame, text=element + ":")
label.grid(row=len(selected_options), column=0, sticky=tk.W)
# Create a Combobox (dropdown menu)
selected_option = tk.StringVar()
combobox = ttk.Combobox(frame, textvariable=selected_option, values=options, state="readonly")
combobox.grid(row=len(selected_options), column=1, sticky=tk.W)
combobox.set(options[0]) # Set a default value
# Create an Entry (text input field) with larger width
entry = ttk.Entry(frame, textvariable=selected_option, width=30)
entry.grid(row=len(selected_options), column=2, sticky=tk.W)
selected_options[element] = selected_option
# Function to generate the prompt
def generate_prompt():
prompt_parts = []
for key, option in selected_options.items():
prompt_parts.append(f"{key}: {option.get()}")
prompt = ", ".join(prompt_parts)
# Wrap the prompt for better readability
wrapped_prompt = textwrap.fill(prompt, width=80) # Adjust width as needed
# Display the prompt in the text box
prompt_text.delete("1.0", tk.END) # Clear the text box
prompt_text.insert(tk.END, wrapped_prompt)
# Create a button to generate the prompt
generate_button = ttk.Button(root, text="Generate Prompt", command=generate_prompt)
generate_button.pack(pady=10)
# Create a text box to display the generated prompt
prompt_text = tk.Text(root, height=10, width=80)
prompt_text.pack()
# Run the main loop
root.mainloop()
Tired of struggling to describe the perfect image for AI art generators? This free, easy-to-use tool helps you craft detailed and effective prompts, unlocking your creative potential without any coding knowledge!
What it Does:
Intuitive Interface: Easy-to-understand dropdown menus and input fields.
Comprehensive Options: Covers a wide range of image characteristics. Ready-to-Use Prompts: Generates prompts formatted for popular AI art tools. - Standalone Application: No Python installation required! (See download link below)
mportant Notes:
mportant Notes:
Google AI Studio License: This tool utilizes concepts and ideas inspired by Google AI Studio. Please review the Google AI Studio terms of service and licensing agreements before using generated prompts with AI image generators: Link to Google AI Studio Terms of Service Disclaimer: I am a developer learning and experimenting with AI. While I've tested this application thoroughly, it may contain errors or produce unexpected results. Use at your own discretion. I am not responsible for the output generated by AI image generators using these prompts. Feedback Welcome: I'm always looking to improve! Please share your feedback and suggestions in the comments below.