我正在尝试根据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 回答
江户川乱折腾
TA贡献1851条经验 获得超5个赞
您正在检索mainloop之前的Entry文本。取而代之的是,您应该检查回调函数中的内容:
def callback(event):
text = inputfield.get()
if 'weather:' in text:
weather()
if 'open:' in text:
program()
# ...
inputfield.bind('<Return>', callback)
此外,如果您将<Return>事件绑定两次,则第二次绑定将覆盖前一次(除非您"+"作为第三个参数传递)。但是,仅使用一个回调,您就足以控制两种情况。
添加回答
举报
0/150
提交
取消