我正在尝试对我在GitHub上找到的代码进行一些调整。 tkinter gui工作得很好,但我想将输入按钮绑定到“获取响应”。按钮:
class TkinterGUIExample(tk.Tk):
def initialize(self):
'''
Set window layout.
'''
self.grid()
self.usr_input = ttk.Entry(self, state='normal')
self.usr_input.grid(column=0, row=0, sticky='nesw', padx=3, pady=3)
self.respond = ttk.Button(self, text='Get Response', command=self.get_response)
self.respond.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)
所以我知道我的按钮在哪里,但我不知道如何,何时或在何处绑定它,同时使用相同的语法。
我的完整代码可以在这里找到: https://github.com/graylu21/ELIZA-ChatterBot/blob/master/ELIZAChatterBot.py
答案 0 :(得分:1)
只需将绑定添加到'<Return>'
:
self.respond = ttk.Button(self, text='Get Response', command=self.get_response)
self.respond.grid(column=1, row=0, sticky='nesw', padx=3, pady=3)
self.bind('<Return>', self.get_response)
每当你按输入 / 返回(Tkinter使用后者,因为'<Enter>'
指的是当鼠标光标进入小部件时){{1}窗口处于活动状态,它将调用self
。
答案 1 :(得分:0)
搞定了!在评论中找到解决方案: How to bind the Enter key to a button in Tkinter
我没有将Enter键绑定到按钮,而是将其绑定到Entry窗口!
import "fmt"
import "log"
import "encoding/json"
const inputWorking = `
["AAAAAA", {"testcode" : "Sss"}, 66666666]
`
const inputBroken = `
[111111, {"testcode" : "Sss"}, 66666666]
`
type RawMessage struct {
AlwaysString interface{} `json:",string"`
ClientData ClientData
ReceptionTime int
}
type ClientData struct {
testcode string
}
func main() {
var n RawMessage
if err := json.Unmarshal([]byte(inputWorking), &n); err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", n)
var o RawMessage
if err := json.Unmarshal([]byte(inputBroken), &o); err != nil {
log.Fatal(err)
}