2012-10-21 11 views
0

您好我正在製作一個程序,可以將不同的屬性應用於使用iters的文本小部件中鍵入的文本。然後根據iters分割該文本並傳遞給外部程序。GTK獲取iter名稱和它應用於的文本

但是,我只能得到應用的第一個iter,並且無法獲得任何後續iters。

例如。 (粗體)您好(粗體)(斜體)您好(斜體)

其中(粗體)和(斜體)代表iters。然而,下面的代碼只能識別(粗體)你好(粗體)和存儲(粗體)在tagList中,你好在textList中。將標籤名稱附加到tagList時,它會引發列表索引超出範圍錯誤。無論如何解決這個問題?

def splitTextMarkup(self): 
    it =buff.get_start_iter() 
    tagList=[] 
    textList=[] 
    while not it.is_end(): 
     nextpos=it.copy() 
     nextpos.forward_to_tag_toggle(None) 
     textList.append(it.get_text(nextpos)) 
     tagList.append(it.get_tags()[0].props.name) 
     it=nextpos 
    return tagList,textList 

回答

1

修好了! forward_to_tag_toggle需要被調用兩次,因爲它首先跳轉到標籤的關閉切換。再次調用它會跳轉到下一個標記的開關

def splitTextMarkup(self): 
it =buff.get_start_iter() 
tagList=[] 
textList=[] 
while not it.is_end(): 
    nextpos=it.copy() 
    nextpos.forward_to_tag_toggle(None) 
    nextpos.forward_to_tag_toggle(None) 
    textList.append(it.get_text(nextpos)) 
    tagList.append(it.get_tags()[0].props.name) 
    it=nextpos 
return tagList,textList