1

私が書いたGUIでpython textctrlを使用しています。いくつかのファイルを読み取った後、ファイルの内容を textctrl に投稿します。それらはすべて同様の形式であるため、最初の数文字に色を付けて、各ファイル出力の開始をマークしようとしました。私がしたことは次のとおりです。

for file in self.dir:
    f = open(file, 'r')
    strInfo = f.read()

    if self.dir.index(file) == 0:
        self.textctrl.SetValue(strInfo)
        self.textctrl.SetStyle(self.textctrl.GetInsertionPoint(),
                               self.textctrl.GetInsertionPoint()+22, wx.TextAttr("RED", "YELLOW"))
    else:
        self.textctrl.AppendText(strInfo)
        self.textctrl.SetStyle(self.textctrl.GetInsertionPoint(), 
                               self.textctrl.GetInsertionPoint()+22, wx.TextAttr("RED", "YELLOW"))

    f.close()

基本的に、このコードは各ファイル出力の最初の 22 文字に色を付ける必要があります。
しかし、それは私が期待したようには機能しません。self.dir リストの 3 つのファイルでテストしました。最初のファイル出力の最初の 22 文字に色を付けます。次に、後に追加される他の 2 つのファイル出力については、3 番目のファイル全体に色を付けますが、2 番目のファイル出力にはまったく色を付けません。

を印刷しGetInsertionPoint()てデバッグしました。正しいです。何が悪いのかわかりません。ヘルプの提案はありますか?

4

1 に答える 1

0

修理済み。GetInsertionPoint() の AppendText の前に、別の変数に名前を付けます。それ以外の場合は、ファイルの終わりを取得します。

于 2011-06-15T15:31:59.603 に答える