AFischer1985 commited on
Commit
26bc02a
·
1 Parent(s): 56fe229

Create run.py

Browse files
Files changed (1) hide show
  1. run.py +62 -0
run.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+
4
+ elemIDs=list(range(5)) # elemIDs 0-4
5
+ internal_state=0
6
+
7
+ def toggler(visibility=[]):
8
+ if(len(visibility)==0):
9
+ print("restore visibility to "+str(list(range(1,len(elemIDs)))))
10
+ visibility=list(range(len(elemIDs))) # visibility of all buttons by default (i.e., without textbox)
11
+ #visibility=[str(e) for e in visibility]
12
+ l=[]
13
+ l.append(gr.Textbox("Visible Text", visible=(0 in visibility)))
14
+ l.append(gr.Button("Submit", visible=(1 in visibility)))
15
+ l.append(gr.Button("Button 2", visible=(2 in visibility)))
16
+ l.append(gr.Button("Button 3", visible=(3 in visibility)))
17
+ l.append(gr.Button("Button 4", visible=(4 in visibility)))
18
+ print("Toggler:\n\nelemIDs="+str(elemIDs)+"\n\nVisibility="+str(visibility)+"\n\nl="+str(l)) #+"\n\ntest4="+str(4 in visibility))
19
+ return l
20
+
21
+ def listener(btn):
22
+ r=0
23
+ if(btn=="Submit"): r=1
24
+ if(btn=="Button 2"): r=2
25
+ if(btn=="Button 3"): r=3
26
+ if(btn=="Button 4"): r=4
27
+ print("Listener:\n\nbtn="+str(btn)+"\n\nr="+str(r))
28
+ return gr.Radio([str(e) for e in elemIDs],label="Button clicked",value=str(r))
29
+
30
+ def respond(message, chat_history, visible_elemIDs):
31
+ global internal_state
32
+ previous_state = internal_state
33
+ internal_state = message
34
+ visible_elemIDs= [e for e in visible_elemIDs if str(e) != str(internal_state)] # streiche button zum aktuellen state
35
+ bot_message = f"I was in state \"{previous_state}\" and am now in state \"{internal_state}\". please click another button."
36
+ chat_history.append((message, bot_message))
37
+ print("respond:\n\nvisible_elemIDs="+str(visible_elemIDs)+"\n\nbot_message="+str(bot_message))
38
+ return message, chat_history, visible_elemIDs
39
+
40
+ with gr.Blocks() as demo:
41
+ chatbot = gr.Chatbot(value=[[None, f"I'm in state \"{internal_state}\". Please click a button!"]])
42
+ msg,btn1,btn2,btn3,btn4 = toggler()
43
+ changeableElems=[msg,btn1,btn2,btn3,btn4]
44
+ visibility=gr.Dropdown(
45
+ elemIDs,
46
+ value=[1,2,3,4], #list(range(len(elemIDs))),
47
+ multiselect=True,
48
+ visible=True, #False,
49
+ label="Active Elements") # determine which elements are visible #,visible=False
50
+ clicked=gr.Radio([str(e) for e in elemIDs],label="Button clicked",value=0) # determine which Element/Button was clicked last
51
+ visibility.change(toggler, inputs=visibility, outputs=changeableElems) # change elemIDs when visibility is changed
52
+ chatbot.change(toggler, inputs=visibility, outputs=changeableElems) # change elemIDs when chatbot responds
53
+ clicked.change(respond,inputs=[clicked,chatbot,visibility], outputs=[clicked,chatbot,visibility])
54
+ btn1.click(listener, inputs=btn1, outputs=clicked)
55
+ btn2.click(listener, inputs=btn2, outputs=clicked)
56
+ btn3.click(listener, inputs=btn3, outputs=clicked)
57
+ btn4.click(listener, inputs=btn4, outputs=clicked)
58
+ with gr.Row():
59
+ chatbot
60
+ gr.Column([btn1,btn2,btn3,btn4])
61
+
62
+ demo.launch()