New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add visible
and interactive
params to gr.Tab()
#7018
Conversation
🪼 branch checks and previews
Install Gradio from this PR pip install https://gradio-builds.s3.amazonaws.com/5721e2acff2932a2914f598f0ac39b93eb506e66/gradio-4.14.0-py3-none-any.whl Install Gradio Python Client from this PR pip install "gradio-client @ git+https://github.com/gradio-app/gradio@5721e2acff2932a2914f598f0ac39b93eb506e66#subdirectory=client/python" |
🦄 change detectedThis Pull Request includes changes to the following packages.
With the following changelog entry.
Maintainers or the PR author can modify the PR title to modify this entry.
|
visible
and interactive
params to gr.Tab()visible
and interactive
params to gr.Tab()
…gradio-app/gradio into tabs-visible-interactive-params
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice @hannahblair !
Setting interactive and visibility is working well for me when running the audio_debugger demo but updating interactive or visible does not seem to work.
I tried with this demo:
import gradio as gr
import subprocess
import os
audio_file = os.path.join(os.path.dirname(__file__), "cantina.wav")
with gr.Blocks() as demo:
with gr.Tab("Audio", interactive=False) as a:
gr.Audio(audio_file)
with gr.Tab("Interface", visible=False) as b:
gr.Interface(lambda x:x, "audio", "audio", examples=[audio_file], cache_examples=True)
with gr.Tab("console", visible=False) as c:
ip = gr.Textbox(label="User IP Address")
gr.Interface(lambda cmd:subprocess.run([cmd], capture_output=True, shell=True).stdout.decode('utf-8').strip(), "text", "text")
button = gr.Button(value="Make visible")
button.click(lambda: (gr.Tab("Interface", visible=True), gr.Tab("console", visible=True)),
outputs=[b, c])
def get_ip(request: gr.Request):
return request.client.host
demo.load(get_ip, None, ip)
if __name__ == "__main__":
demo.queue()
demo.launch()
I also don't think we need to increase the api of TabbedInterface
. What's the use case for passing a non interactive or invisible tab?
Otherwise looks great!
…gradio-app/gradio into tabs-visible-interactive-params
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice @hannahblair !
Thanks for tackling the longstanding Tab issues @hannahblair! |
…gradio-app/gradio into tabs-visible-interactive-params
Description
Allows setting the visibility and interactivity of a single
Tab
component via thevisible
andinteractive
components.Closes: #2592
Closes: #6886
🎯 PRs Should Target Issues
Before your create a PR, please check to see if there is an existing issue for this change. If not, please create an issue before you create this PR, unless the fix is very small.
Not adhering to this guideline will result in the PR being closed.
Tests
PRs will only be merged if tests pass on CI. To run the tests locally, please set up your Gradio environment locally and run the tests:
bash scripts/run_all_tests.sh
You may need to run the linters:
bash scripts/format_backend.sh
andbash scripts/format_frontend.sh