关于tkinter中绑定标记的基本查询


在给定的示例中,这个职位,如果使用默认绑定标记,则事件值在定义中不可见(将滞后一个)。


关于类绑定有一些解释。

我是个初学者,所以想了解详细的原因。

请解释一下为什么它在第一种情况下不起作用,而在第二种情况下起作用(当绑定标签的顺序被修改时)。


import Tkinter


def 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()


万千封印
浏览 600回答 3
3回答

九州编程

只有一个疑问。当处理默认情况下的bindtag时,将对第一个小部件实例绑定进行评估,并且由于它没有任何中断语句,因此将处理下一个绑定(即类),那么为什么这里没有打印值呢?我的意思是,如果没有BACK语句,那么所有绑定标记都应该为一个事件处理,其中也包括类绑定。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python