我正在尝试根据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()
功能。但是我无法弄明白。有人有什么建议吗?
答案 0 :(得分:3)
您正在检索主循环之前的条目文本。而不是那样,你应该检查回调函数内的内容:
def callback(event):
text = inputfield.get()
if 'weather:' in text:
weather()
if 'open:' in text:
program()
# ...
inputfield.bind('<Return>', callback)
此外,如果绑定<Return>
事件两次,则第二个绑定将覆盖前一个绑定(unless you pass "+"
as the third argument)。但是,只有一个回调,您就足以控制两种情况。