2015-11-27 109 views
1

我在文本小部件中有一些標籤並將點擊功能綁定到所有人。Python TKinter在文本小部件中獲得點擊標籤

我的例句是「我可愛,小貓」。 「可愛」和「小」是帶有標記adj的標記詞。

在這個點擊功能,我無法弄清楚我點擊的字符串的方式。當我點擊可愛我想打印可愛的控制檯。

這就是我迄今爲止,我沒有包括我如何應用標籤,因爲這個工程。點擊功能被正確調用。

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 

有沒有辦法做到這一點?

最佳, 邁克爾

回答

2

我設法提取點擊標籤從光標所在位置的文本。我將它轉換爲索引並檢查覆蓋索引的標記。

這裏是我的解決方案:

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)) 
相關問題