0

こんにちは、イターを使用してテキストウィジェットに入力されたテキストにさまざまなプロパティを適用できるプログラムを作成しています。このテキストは iters に従って分割され、外部プログラムに渡されます。

ただし、適用される最初の iter しか取得できず、後続の iter を取得できません。

例えば。(太字)こんにちは(太字)(斜体)お元気ですか(斜体)

ここで、(太字) と (イタリック体) は反復を表します。ただし、以下のコードは (Bold)Hi there(Bold) のみを認識し、(bold) を tagList に格納し、Hi there を 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
4

1 に答える 1

1

修正しました!forward_to_tag_toggleは、最初にタグのオフトグルにジャンプするため、2回呼び出す必要があります。もう一度呼び出すと、次のタグのオントグルにジャンプします

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
于 2012-10-21T04:13:36.887 に答える