Update app.py
Browse files
app.py
CHANGED
@@ -115,6 +115,8 @@ p {
|
|
115 |
flex-direction: column;
|
116 |
justify-content: center; /* Centrar verticalmente el contenido */
|
117 |
min-height: 80px; /* Altura mínima para asegurar visibilidad */
|
|
|
|
|
118 |
}
|
119 |
.gradio-output .label-text {
|
120 |
color: #00BFFF !important; /* Color de acento para el texto del label (LABEL_1, LABEL_0, etc.) */
|
@@ -160,12 +162,23 @@ p {
|
|
160 |
white-space: nowrap; /* Evitar que el texto se rompa en varias líneas */
|
161 |
flex-shrink: 0; /* No permitir que se encojan si hay poco espacio */
|
162 |
cursor: pointer; /* Indicar que son clickeables */
|
|
|
|
|
163 |
}
|
164 |
.example-button:hover {
|
165 |
background-color: #007ACC !important; /* Azul Oscuro al pasar el ratón por los ejemplos */
|
166 |
border-color: #00BFFF !important;
|
167 |
}
|
168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
/* LÍNEAS DIVISORIAS */
|
170 |
hr {
|
171 |
border-top: 1px solid #4A5B6C; /* Línea divisoria con Gris Claro */
|
@@ -288,19 +301,17 @@ with gr.Blocks(css=custom_css, theme=None) as demo:
|
|
288 |
)
|
289 |
analyze_btn = gr.Button("Analyze Sentiment", variant="primary")
|
290 |
|
291 |
-
# ---
|
292 |
-
gr.Markdown("<
|
293 |
-
gr.Markdown("<h3 style='color: #00BFFF;'>Try examples:</h3>")
|
294 |
|
295 |
-
|
|
|
|
|
296 |
# Generar 3 botones de ejemplo aleatorios
|
297 |
-
# Nota: Esto se genera una vez al inicio del Space. Para que cambie con cada recarga
|
298 |
-
# del usuario, se necesita un enfoque de state o una función para recargar la interfaz.
|
299 |
-
# Para un iframe simple, se recargará al recargar la página web.
|
300 |
for example_text in random.sample(ALL_EXAMPLES, 3):
|
301 |
gr.Button(
|
302 |
example_text,
|
303 |
-
elem_classes="example-button"
|
304 |
).click(
|
305 |
fn=lambda x: x, # Función simple para pasar el texto del botón al textbox
|
306 |
inputs=[gr.State(example_text)], # Usamos gr.State para pasar el texto del botón
|
@@ -310,12 +321,14 @@ with gr.Blocks(css=custom_css, theme=None) as demo:
|
|
310 |
inputs=text_input,
|
311 |
outputs=[overall_sentiment_output, confidence_scores_output, raw_output]
|
312 |
)
|
313 |
-
|
314 |
-
gr.Markdown("<hr>")
|
315 |
gr.Markdown("<h2 style='color: #00BFFF;'>📊 Results</h2>")
|
316 |
|
317 |
# Output principal de sentimiento que se expande horizontalmente
|
318 |
-
|
|
|
|
|
319 |
# Estos se mantienen ocultos
|
320 |
confidence_scores_output = gr.Label(num_top_classes=3, label="Confidence Scores", visible=False)
|
321 |
raw_output = gr.JSON(label="Raw Model Output", visible=False)
|
|
|
115 |
flex-direction: column;
|
116 |
justify-content: center; /* Centrar verticalmente el contenido */
|
117 |
min-height: 80px; /* Altura mínima para asegurar visibilidad */
|
118 |
+
width: 100%; /* Asegurar que ocupe todo el ancho disponible */
|
119 |
+
box-sizing: border-box; /* Incluir padding y borde en el ancho */
|
120 |
}
|
121 |
.gradio-output .label-text {
|
122 |
color: #00BFFF !important; /* Color de acento para el texto del label (LABEL_1, LABEL_0, etc.) */
|
|
|
162 |
white-space: nowrap; /* Evitar que el texto se rompa en varias líneas */
|
163 |
flex-shrink: 0; /* No permitir que se encojan si hay poco espacio */
|
164 |
cursor: pointer; /* Indicar que son clickeables */
|
165 |
+
flex-grow: 1; /* Permitir que los botones de ejemplo crezcan para llenar el espacio */
|
166 |
+
min-width: 80px; /* Asegurar un ancho mínimo para cada botón */
|
167 |
}
|
168 |
.example-button:hover {
|
169 |
background-color: #007ACC !important; /* Azul Oscuro al pasar el ratón por los ejemplos */
|
170 |
border-color: #00BFFF !important;
|
171 |
}
|
172 |
|
173 |
+
/* Contenedor de los botones de ejemplo para forzar el "wrap" con flexbox */
|
174 |
+
.example-buttons-container {
|
175 |
+
display: flex;
|
176 |
+
flex-wrap: wrap; /* ¡Esto simula el wrap que no podemos usar en gr.Row! */
|
177 |
+
justify-content: center; /* Centrar los botones si no llenan la línea */
|
178 |
+
margin-top: 5px; /* Pequeño margen superior */
|
179 |
+
margin-bottom: 10px; /* Pequeño margen inferior */
|
180 |
+
}
|
181 |
+
|
182 |
/* LÍNEAS DIVISORIAS */
|
183 |
hr {
|
184 |
border-top: 1px solid #4A5B6C; /* Línea divisoria con Gris Claro */
|
|
|
301 |
)
|
302 |
analyze_btn = gr.Button("Analyze Sentiment", variant="primary")
|
303 |
|
304 |
+
# --- Título para los ejemplos ---
|
305 |
+
gr.Markdown("<h3 style='color: #00BFFF; margin-top: 5px; margin-bottom: 5px;'>Try examples:</h3>")
|
|
|
306 |
|
307 |
+
# Contenedor para los botones de ejemplo para manejar el "wrap" vía CSS
|
308 |
+
# Importante: gr.Row no tiene wrap en 5.31.0, así que lo manejamos con CSS en .example-buttons-container
|
309 |
+
with gr.Row(elem_classes="example-buttons-container"):
|
310 |
# Generar 3 botones de ejemplo aleatorios
|
|
|
|
|
|
|
311 |
for example_text in random.sample(ALL_EXAMPLES, 3):
|
312 |
gr.Button(
|
313 |
example_text,
|
314 |
+
elem_classes="example-button"
|
315 |
).click(
|
316 |
fn=lambda x: x, # Función simple para pasar el texto del botón al textbox
|
317 |
inputs=[gr.State(example_text)], # Usamos gr.State para pasar el texto del botón
|
|
|
321 |
inputs=text_input,
|
322 |
outputs=[overall_sentiment_output, confidence_scores_output, raw_output]
|
323 |
)
|
324 |
+
|
325 |
+
gr.Markdown("<hr>") # Separador
|
326 |
gr.Markdown("<h2 style='color: #00BFFF;'>📊 Results</h2>")
|
327 |
|
328 |
# Output principal de sentimiento que se expande horizontalmente
|
329 |
+
# Mantenemos 'overall_sentiment_output' en el flujo normal,
|
330 |
+
# sin un gr.Row separado para que ocupe todo el ancho por defecto del Column.
|
331 |
+
overall_sentiment_output = gr.HTML(label="Overall Sentiment") # Eliminamos scale=3 si causa problemas
|
332 |
# Estos se mantienen ocultos
|
333 |
confidence_scores_output = gr.Label(num_top_classes=3, label="Confidence Scores", visible=False)
|
334 |
raw_output = gr.JSON(label="Raw Model Output", visible=False)
|