我正在尝试创建一个聊天机器人(称为JARVIS),用户可以在其中与jarvis交谈。我使用tinker创建了一个GUI,带有一个聊天窗口。我只是想让用户在输入框中输入一些内容,这可以回复我的代码,例如:
JARVIS: what is your name?
USER: Vincent
JARVIS: Hello Vincent!
基本上我需要在Tkinkter输入框中输入一个输入函数
这是我到目前为止所得到的(您可以通过运行代码了解我的意思): 我不想更改我的代码,但是任何有关清理它的建议都是非常受欢迎的。
#imports
from tkinter import *
import tkinter as tk
root = Tk()
def cbc(id, tex):
return lambda : callback(id, tex)
#button user
def callback(id, tex):
d = 'USER:' + e.get() + '\n'
tex.insert(tk.END, d)
tex.see(tk.END)
e.delete(0, 'end')
#jarvis's words
def jarvisprint(words):
jarvissay = 'JARVIS:' + str(words) + '\n'
tex.insert(tk.END, jarvissay)
tex.tag_add("start", "end -" + str(len(jarvissay) +1) + " chars", 'end -1 lines') #change if colour
tex.tag_config("start", foreground="black")
tex.see(tk.END)
#enter user
def returnev(event):
d = 'USER:' + e.get() + '\n'
tex.insert(tk.END, d)
tex.see(tk.END)
e.delete(0, 'end')
def refresh():
tex.delete('1.0', 'end')
#--------------------------- textbox
tex = tk.Text(master=root, width=40, fg='blue')
tex.pack(side=tk.TOP)
bop = tk.Frame()
bop.pack(side=tk.LEFT)
#--------------------------- entry box
e = Entry(root)
e.pack(fill = X)
e.focus_set()
e.bind('<Return>', returnev)
#---------------------------send button
b = tk.Button(root, text="send", command=cbc(1, tex))
b.pack()
c = tk.Button(root, text="refresh", command= refresh)
c.pack()
#------CODING-----------------------
jarvisprint("What is your name?")
x = 45
y = 92
z = x + y
jarvisprint(z)
#I WANT TO INSERT AN INPUT FUNCTION HERE E.G. ageVar = str(input("how old are you?"))
#so the user will insert age in the entry box in tkinter
#then call it here>>>>>>>> jarvisprint("you are " + ageVar)
root.mainloop()
答案 0 :(得分:0)
老实说,我认为这取决于您要通过程序实现的目标。我的意思是你可以轻松地制作一组具有不同响应的数组,并使用 if/else 循环与输入函数配对来制作响应式聊天机器人。那将是一条“简单”的路线,而且我实际上正在做一个这样的小项目。