python - 在 tkinter python 中使用回车键
问题描述
我正在尝试创建一个chatterbot
应用程序。我想使用"Enter"
key 将输入提供给我的BOT
. 我正在尝试各种使用方式,但运气不好。"input_field.bind("<Return>", enter_pressed)"
请在下面的代码中建议如何使用。
from chatterbot import ChatBot
import tkinter as tk
try:
import ttk as ttk
import ScrolledText
except ImportError:
import tkinter.ttk as ttk
import tkinter.scrolledtext as ScrolledText
import time
class TkinterGUIExample(tk.Tk):
def __init__(self, *args, **kwargs):
"""
Create & set window variables.
"""
tk.Tk.__init__(self, *args, **kwargs)
self.chatbot = ChatBot(
"GUI Bot",
storage_adapter="chatterbot.storage.SQLStorageAdapter",
logic_adapters=[
"chatterbot.logic.BestMatch"
],
input_adapter="chatterbot.input.VariableInputTypeAdapter",
output_adapter="chatterbot.output.OutputAdapter",
database="../database.db"
)
self.title("Chatterbot")
self.initialize()
def initialize(self):
"""
Set window layout.
"""
self.grid()
self.respond = ttk.Button(self, text='Get Response', command=self.get_response)
self.respond.grid(column=0, row=0, sticky='nesw', padx=3, pady=3)
self.usr_input = ttk.Entry(self, state='normal')
self.usr_input.grid(column=1, row=0, sticky='nesw', padx=3, pady=3)
self.conversation_lbl = ttk.Label(self, anchor=tk.E, text='Conversation:')
self.conversation_lbl.grid(column=0, row=1, sticky='nesw', padx=3, pady=3)
self.conversation = ScrolledText.ScrolledText(self, state='disabled')
self.conversation.grid(column=0, row=2, columnspan=2, sticky='nesw', padx=3, pady=3)
def get_response(self):
"""
Get a response from the chatbot and display it.
"""
user_input = self.usr_input.get()
self.usr_input.delete(0, tk.END)
response = self.chatbot.get_response(user_input)
self.conversation['state'] = 'normal'
self.conversation.insert(
tk.END, "Human: " + user_input + "\n" + "ChatBot: " + str(response.text) + "\n"
)
self.conversation['state'] = 'disabled'
time.sleep(0.5)
gui_example = TkinterGUIExample()
gui_example.mainloop()
解决方案
而不是绑定input_field,尝试绑定根
root = tk.TK()
root.bind('<Return>', enter_pressed)
在您的代码中尝试使用
tk.TK.bind('<Return>', enter_pressed)
在__init__()
函数中
推荐阅读
- clojure - clojure中Select查询的批处理
- python - 使用 sys.exit(或提高 SystemExit)有什么意义?
- oracle - oracle的Kafka JDBC源连接器不起作用
- xamarin.forms - Xamarin.Forms 如何根据一天中的时间更改主题
- c - 错误:生成多个输出文件时无法指定 -o
- salesforce - 如何在 Salesforce 中使用 sql 查询关闭机会和关闭谁?
- elasticsearch - 我可以在 kibana 中创建一个插件,在 kibana 仪表板内的小部件菜单中为我提供“下载为 csv 选项”吗?
- r - 根据条件替换字符串中的匹配模式
- c - mq_open 的 oflag 参数不反映创建的 mqueue 文件的实际访问位
- jquery - Videojs - 如何在控制栏中添加自定义图标