在给定的示例中,这个职位,如果使用默认绑定标记,则事件值在定义中不可见(将滞后一个)。关于类绑定有一些解释。我是个初学者,所以想了解详细的原因。请解释一下为什么它在第一种情况下不起作用,而在第二种情况下起作用(当绑定标签的顺序被修改时)。import Tkinterdef OnKeyPress(event): value = event.widget.get() string="value of %s is '%s'" % (event.widget._name, value) status.configure(text=string)root = Tkinter.Tk()entry1 = Tkinter.Entry(root, name="entry1")entry2 = Tkinter.Entry(root, name="entry2")entry3 = Tkinter.Entry(root, name="entry3")entry1.bindtags(('.entry1', 'Entry', '.', 'all'))entry2.bindtags(('Entry', '.entry1', '.', 'all'))entry3.bindtags(('.entry1','Entry','post-class-bindings', '.', 'all'))btlabel1 = Tkinter.Label(text="bindtags: %s" % " ".join(entry1.bindtags()))btlabel2 = Tkinter.Label(text="bindtags: %s" % " ".join(entry2.bindtags()))btlabel3 = Tkinter.Label(text="bindtags: %s" % " ".join(entry3.bindtags()))status = Tkinter.Label(anchor="w")entry1.grid(row=0,column=0)btlabel1.grid(row=0,column=1, padx=10, sticky="w")entry2.grid(row=1,column=0)btlabel2.grid(row=1,column=1, padx=10, sticky="w")entry3.grid(row=2,column=0)btlabel3.grid(row=2,column=1, padx=10)status.grid(row=3, columnspan=2, sticky="w")entry1.bind("<KeyPress>", OnKeyPress)entry2.bind("<KeyPress>", OnKeyPress)entry3.bind_class("post-class-bindings", "<KeyPress>", OnKeyPress)root.mainloop()
3 回答

九州编程
TA贡献1785条经验 获得超4个赞
只有一个疑问。当处理默认情况下的bindtag时,将对第一个小部件实例绑定进行评估,并且由于它没有任何中断语句,因此将处理下一个绑定(即类),那么为什么这里没有打印值呢?我的意思是,如果没有BACK语句,那么所有绑定标记都应该为一个事件处理,其中也包括类绑定。
添加回答
举报
0/150
提交
取消