我有一个绑定键组合:
self.parent.bind_all('<Control-n>', self.next_marked)
它应该带我到文本小部件中的下一个标签,其父级是一个框架 .
def next_marked(self, skip=False):
print (len(self.text.tag_ranges('definition')))
print('next_marked()')
self.text.focus_set()
print (self.text.index(INSERT))
next_tag = str(self.text.tag_nextrange('definition', 'insert+1c')[0])
print (self.text.index(INSERT))
spl = next_tag.split('.')
line = int(spl[0])
col = int(spl[1])
self.text.mark_set('insert', '%d.%d' % ( line, col ))
当我不使用热键时它会这样做,但是当我使用热键时,它总是将光标的位置向下移动一行然后执行该功能 . 这是我的操作系统吗? (Windows 7)有关如何处理此问题的任何建议?
我使用的是Python 2.7和Tkinter 8.5
1 回答
问题似乎是
<Control-n>
已经绑定到Text
类的"go to next line",如果有多个绑定,they will all be executed, in a specific order:所以你可以为所有
Text
小部件覆盖<Control-n>
的现有类级绑定:或者将您的函数绑定到实例(因此它在类级别绑定之前进行调度)并使其
return "break"
取消所有后续绑定:另外,请注意,当用作
bind
的回调时,第一个参数(在self
之后),即在您的情况下为skip
,将始终为Event
.