作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个聊天机器人(称为 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()
最佳答案
老实说,我认为这取决于您要通过程序完成的目标。我的意思是,您可以轻松地制作一组具有不同响应的数组,并使用 if/else 循环与输入函数配对来制作响应式聊天机器人。那将是一条“简单”的路线,而我实际上正在从事这样一个小型项目。
关于python - Tkinter Entrybox如何拥有类似Shell Input()的输入功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200284/
是否可以选择编辑 Tkinter EntryBox 内的填充?以便用户输入的文本开始,例如距左边框 10px。 最佳答案 从技术上讲,是的,如果您使用的是 .grid() . 使用: grid(ipa
我是一名优秀的程序员,十分优秀!