alloTek / app.py
Batwilf's picture
Update app.py
379af61 verified
raw
history blame
4.51 kB
import tkinter as tk
from tkinter import ttk, scrolledtext
from PIL import Image, ImageTk
import os
from datetime import datetime
import json
import requests
from io import BytesIO
class DrawingTutorialApp:
def __init__(self, root):
self.root = root
self.root.title("Générateur de Tutoriel de Dessin")
# Configuration des styles
self.setup_styles()
# Variables
self.current_step = 0
self.generated_images = []
self.steps_description = []
# Création de l'interface
self.create_interface()
def setup_styles(self):
style = ttk.Style()
style.configure('TButton', padding=5)
style.configure('TFrame', padding=5)
def create_interface(self):
# Frame principal
main_frame = ttk.Frame(self.root)
main_frame.pack(expand=True, fill='both', padx=10, pady=10)
# Zone de description
desc_frame = ttk.LabelFrame(main_frame, text="Description du dessin")
desc_frame.pack(fill='x', pady=5)
self.description_text = scrolledtext.ScrolledText(desc_frame, height=4)
self.description_text.pack(fill='x', padx=5, pady=5)
# Boutons de contrôle
control_frame = ttk.Frame(main_frame)
control_frame.pack(fill='x', pady=5)
ttk.Button(control_frame, text="Générer les étapes",
command=self.generate_steps).pack(side='left', padx=5)
ttk.Button(control_frame, text="Étape précédente",
command=self.previous_step).pack(side='left', padx=5)
ttk.Button(control_frame, text="Étape suivante",
command=self.next_step).pack(side='left', padx=5)
# Zone d'affichage
self.display_frame = ttk.LabelFrame(main_frame, text="Aperçu de l'étape")
self.display_frame.pack(fill='both', expand=True, pady=5)
self.image_label = ttk.Label(self.display_frame)
self.image_label.pack(padx=5, pady=5)
# Zone de description des étapes
self.step_description = ttk.Label(self.display_frame,
text="Aucune étape générée",
wraplength=400)
self.step_description.pack(padx=5, pady=5)
def generate_steps(self):
description = self.description_text.get("1.0", "end-1c")
if not description:
return
# Définition des étapes standard de dessin
base_steps = [
"Esquisse de base et formes géométriques",
"Ajout des détails principaux",
"Affinement des lignes",
"Ajout des ombres de base",
"Colorisation de base",
"Ajout des détails de couleur",
"Finalisation et mise en valeur"
]
# Ici, vous intégreriez votre API de génération d'images
# Pour l'exemple, nous simulons la génération
self.generated_images = []
self.steps_description = []
for step in base_steps:
# Simuler la génération d'image
# Dans une vraie implémentation, appelez votre API ici
blank_image = Image.new('RGB', (400, 400), 'white')
self.generated_images.append(blank_image)
self.steps_description.append(f"{step}\n{description}")
self.current_step = 0
self.update_display()
def update_display(self):
if not self.generated_images:
return
image = self.generated_images[self.current_step]
photo = ImageTk.PhotoImage(image)
self.image_label.configure(image=photo)
self.image_label.image = photo
step_text = f"Étape {self.current_step + 1}/{len(self.generated_images)}\n"
step_text += self.steps_description[self.current_step]
self.step_description.configure(text=step_text)
def previous_step(self):
if self.current_step > 0:
self.current_step -= 1
self.update_display()
def next_step(self):
if self.current_step < len(self.generated_images) - 1:
self.current_step += 1
self.update_display()
def main():
root = tk.Tk()
app = DrawingTutorialApp(root)
root.mainloop()
if __name__ == "__main__":
main()