area444's picture
Update app.py
18f0e3e verified
import gradio as gr
import os
# Function that controls the visibility of the panels
def check_words(user_text, input_text):
# If the entered text is "user" and "casa", show Panel 2 and hide Panel 1
if user_text == os.getenv("USERNAME") and input_text == os.getenv("PASSWORD"):
return gr.update(visible=True), gr.update(visible=False), gr.update(value=""), gr.update(value="") # Show Panel 2, hide Panel 1
else:
return gr.update(visible=False), gr.update(visible=True), user_text, input_text # Keep Panel 2 hidden, show Panel 1
# Function to hide Panel 2
def hide_panel():
return gr.update(visible=False) # Hide Panel 2
# Function to show Panel 1
def show_panel_1():
return gr.update(visible=True) # Show Panel 1
# Wrapper function to hide Panel 2 and show Panel 1 when btn_2 is clicked
def hide_and_show_panel():
return hide_panel(), show_panel_1()
# Create the Gradio interface
with gr.Blocks() as demo:
# Create the first panel (visible from the start)
with gr.Column(visible=True) as panel_1:
user_text = gr.Textbox(label="User name:")
input_text = gr.Textbox(label="Password:", type="password")
# First button, visible from the start
btn_1 = gr.Button("Login")
# Create the second panel that is initially hidden
with gr.Column(visible=False) as panel_2:
# This panel will be shown if the condition is met
gr.Textbox(value="Login ok", label="Status Login:")
# Add a second button inside Panel 2 to hide the panel and show Panel 1 again
btn_2 = gr.Button("Logout", visible=True)
btn_2.click(hide_and_show_panel, outputs=[panel_2, panel_1]) # Hide Panel 2 and show Panel 1
# Configure the buttons and the panel visibility
btn_1.click(check_words, inputs=[user_text, input_text], outputs=[panel_2, panel_1, user_text, input_text]) # Hide Panel 1 and show Panel 2
# Launch the Gradio interface
demo.launch()