从Entry而不是手动Dialogflow输入中检测意图

时间:2018-08-01 07:04:47

标签: python tkinter dialogflow

所以我在Python中有这个功能,可以在输入输入时检测意图。

for text in texts:
    text_input = dialogflow.types.TextInput(text=text, language_code=language_code)
    query_input = dialogflow.types.QueryInput(text=text_input)
    response = session_client.detect_intent(session=session, query_input=query_input)

    print ('Chatbot: {}\n'.format(response.query_result.fulfillment_text))
detect_intent_texts("chat-8","abc",["Hey"],"en-us")

还有我目前的gui

myText = StringVar()
window.resizable(False, False)
window.title("Chatbot")
window.geometry('400x400')
User_Input = Entry(window, textvariable=myText, width=50).place(x=20, y=350)
subButton = Button(window, text="Send").place(x =350, y=350)
window.mainloop()

我的目标是创建一个接受用户输入的GUI,并在提交代码后检测用户输入的内容。从上面可以看到,在最后一行[“ Hey”]上,我可以在此键入我喜欢的任何内容,并且聊天机器人可以在控制台中进行响应,尽管它不是我想要达到的目标。

我该如何命令[“”]检测用户在Entry小部件中写了什么?

1 个答案:

答案 0 :(得分:0)

place()仅在特殊情况下才需要。最好使用pack()grid()

我不知道您想对输入的结果(对于文本中的文本)做什么,但这是一个有效的GUI。按下“发送”按钮时,您需要破坏主窗口。

对于tk和ttk条目小部件,始终使用tk.StringVar().get()。使用Entry.get()有时会给出空字符串。

import tkinter as tk

result = None

def Response():
  global result
  result = myText.get()
  window.destroy()

window = tk.Tk()

myText = tk.StringVar()
window.resizable(False, False)
window.title("Chatbot")
window.geometry('400x400')
User_Input = tk.Entry(window, textvariable=myText, width=50).pack()
subButton = tk.Button(window, text="Send", command=Response ).pack()
window.mainloop()

print('Entered:', result)