我在文本小部件中有一些标签,并将单击功能绑定到所有标签。
我的例句是“我的猫咪可爱”。“ Cute”和“ little”是带有标签adj的标签单词。
在此单击功能中,我无法弄清楚获取单击的字符串的方式。当我单击cute时,我想在控制台上打印出cute。
到目前为止,这是我所拥有的,因为该方法有效,所以我未包括如何应用标签。单击函数被正确调用。
def __init__(self, master):
# skipped some stuff here
self.MT.tag_config('adj', foreground='orange')
# here i bind the click function
self.MT.tag_bind('adj', '<Button-1>', self.click)
def click(self, event):
print(dir(event))
# i want to print the clicked tag text here
有没有办法做到这一点?
最好,迈克尔
我设法从光标位置提取了单击标签的文本。我将其转换为索引,并检查了覆盖该索引的标签。
这是我的解决方案:
def click(self, event):
# get the index of the mouse click
index = self.MT.index("@%s,%s" % (event.x, event.y))
# get the indices of all "adj" tags
tag_indices = list(self.MT.tag_ranges('adj'))
# iterate them pairwise (start and end index)
for start, end in zip(tag_indices[0::2], tag_indices[1::2]):
# check if the tag matches the mouse click index
if self.MT.compare(start, '<=', index) and self.MT.compare(index, '<', end):
# return string between tag start and end
return (start, end, self.MT.get(start, end))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句