调用不同的函数tkinter

时间:2013-06-09 21:42:08

标签: python python-3.x tkinter

我正在尝试根据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()功能。但是我无法弄明白。有人有什么建议吗?

1 个答案:

答案 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)。但是,只有一个回调,您就足以控制两种情况。