ivanoctaviogaitansantos commited on
Commit
b5407a3
·
verified ·
1 Parent(s): 5e55534

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -9
app.py CHANGED
@@ -1,6 +1,8 @@
1
  import random
2
  import gradio as gr
3
- from typing import Optional, Dict, Any
 
 
4
 
5
  class PromptGenerator:
6
  def __init__(self):
@@ -114,25 +116,65 @@ class PromptGenerator:
114
  f"Pose: {pose}. Scene: {setting}. Atmosphere: {atmosphere}. "
115
  f"{self.TECHNICAL_DETAILS}"
116
  )
117
- return f"``````"
 
118
 
119
- def generate_five_prompts(self):
120
  return [self.generate_prompt() for _ in range(5)]
121
 
 
122
 
123
- def generate_prompts():
 
124
  generator = PromptGenerator()
125
- # Concatena cada prompt en su bloque individual separado por línea vacía.
126
- return "\n\n".join(generator.generate_five_prompts())
127
 
128
 
129
- import gradio as gr
 
 
130
 
131
  with gr.Blocks() as demo:
132
  gr.Markdown("# Hyperrealistic Full-Body Prompt Generator")
133
- output = gr.Textbox(label="Generated Prompts", lines=20)
 
 
 
 
134
  button = gr.Button("Generate 5 Prompts")
135
- button.click(fn=generate_prompts, outputs=output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
 
137
  if __name__ == "__main__":
138
  demo.launch()
 
1
  import random
2
  import gradio as gr
3
+ from typing import Optional, Dict, Any, List
4
+
5
+ # --- Clase PromptGenerator (Sin cambios relevantes a la lógica, solo corrección del return) ---
6
 
7
  class PromptGenerator:
8
  def __init__(self):
 
116
  f"Pose: {pose}. Scene: {setting}. Atmosphere: {atmosphere}. "
117
  f"{self.TECHNICAL_DETAILS}"
118
  )
119
+ # CORRECCIÓN: Devolver el prompt real, no solo "``````"
120
+ return prompt
121
 
122
+ def generate_five_prompts(self) -> List[str]:
123
  return [self.generate_prompt() for _ in range(5)]
124
 
125
+ # --- Función de la interfaz de usuario de Gradio ---
126
 
127
+ def generate_prompts_list():
128
+ """Genera y devuelve la lista de 5 prompts."""
129
  generator = PromptGenerator()
130
+ return generator.generate_five_prompts()
 
131
 
132
 
133
+ # --- Definición de la interfaz de usuario con Acordeones ---
134
+
135
+ PROMPT_COUNT = 5 # Cantidad de prompts a generar
136
 
137
  with gr.Blocks() as demo:
138
  gr.Markdown("# Hyperrealistic Full-Body Prompt Generator")
139
+
140
+ # Crea una lista de Textbox para mostrar cada prompt individualmente
141
+ prompt_outputs = [gr.Textbox(label=f"Prompt {i+1}", lines=5, interactive=False, show_copy_button=False)
142
+ for i in range(PROMPT_COUNT)]
143
+
144
  button = gr.Button("Generate 5 Prompts")
145
+
146
+ # Define el layout con acordeones y botones de copia
147
+ with gr.Row():
148
+ with gr.Column():
149
+ gr.Markdown("## Generated Prompts")
150
+
151
+ # Itera para crear 5 acordeones, uno para cada prompt
152
+ for i in range(PROMPT_COUNT):
153
+ # Usamos el título del acordeón para dar un resumen del prompt (opcional, podrías usar solo "Prompt N")
154
+ with gr.Accordion(f"Prompt #{i+1} (Click para ver y copiar)", open=False):
155
+ # El Textbox para el prompt, que es uno de los elementos en prompt_outputs
156
+ prompt_outputs[i].render()
157
+
158
+ # Botón de copia para el prompt
159
+ # Gradio soporta show_copy_button=True en Textbox, pero para un control más explícito:
160
+ # Alternativa simple: usa el show_copy_button=True en el Textbox de arriba
161
+ # Para mantener la estética que pides:
162
+ gr.Textbox(value="", label="Copiar Prompt", elem_classes=["hidden"], show_copy_button=True, interactive=False, value=prompt_outputs[i].value)
163
+
164
+ # Nota: El Textbox renderizado dentro del Accordion ya tiene el valor del prompt_outputs[i]
165
+ # La forma más limpia es usar la propiedad nativa show_copy_button=True en el Textbox.
166
+ # He actualizado el Textbox inicial (prompt_outputs) para incluirlo.
167
+
168
+ # ¡Mejor y más simple!: Usaremos show_copy_button=True en el Textbox de arriba.
169
+ # Actualicé la definición de `prompt_outputs` para usar `show_copy_button=True`.
170
+ pass
171
+
172
+ # La acción del botón: llama a la función de generación y asigna la lista de resultados
173
+ # a la lista de Textboxes creados.
174
+ button.click(
175
+ fn=generate_prompts_list,
176
+ outputs=prompt_outputs
177
+ )
178
 
179
  if __name__ == "__main__":
180
  demo.launch()