1

我正在尝试根据 Tkinter 程序中输入的文本调用不同的函数。

root=Tk()
tex=Text(root)
tex.pack(side='right')
inputfield = Entry(root)
inputfield.pack(side='bottom')
text = inputfield.get()
if 'weather:' in text:
    inputfield.bind('<Return>', lambda _: weather())
if 'open:' in text:
     inputfield.bind('<Return>', lambda _: program())

root.mainloop()

我正在尝试这样做,所以如果输入的文本包含weather:,那么它将调用该weather()函数。但是,如果输入的文本包含open:,则它会打开该program()功能。但是我无法弄清楚。有人有什么建议吗?

4

1 回答 1

3

您正在主循环之前检索条目的文本。取而代之的是,您应该检查回调函数中的内容:

def callback(event):
    text = inputfield.get()
    if 'weather:' in text:
        weather()
    if 'open:' in text:
        program()

# ...
inputfield.bind('<Return>', callback)

此外,如果您绑定两次<Return>事件,第二次绑定将覆盖前一次绑定(除非您"+"作为第三个参数传递)。但是,只需一个回调,您就足以控制这两种情况。

于 2013-06-09T21:54:12.063 回答