2011-06-14 5 views
1

GUI로 python textctrl을 사용하고 있습니다. 여러 파일을 읽은 다음에는 textctrl에 파일의 내용을 게시합니다. 그들은 모두 비슷한 형식이므로, 각 파일 출력의 시작 부분을 표시하기 위해 처음 몇 가지 문자를 색칠하려고했습니다. 내가 한 일은 다음과 같습니다.Python textctrl setstyle이 삽입 점을 올바르게 읽을 수 없습니다.

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자를 색으로 표시합니다. 이후에 추가되는 다른 두 파일 출력의 경우 세 번째 파일의 전체 부분에 색상이 지정되지만 두 번째 파일 출력에는 색상이 적용되지 않습니다.

디버그를 위해 GetInsertionPoint()을 인쇄했습니다. 맞습니다. 나는 무엇이 잘못되었는지 모른다. 도움이 필요하십니까?

+0

코드가 멋지게 보이지 않습니다 ... 첫 번째 줄은 for 루프입니다 ... – Mua

답변

0

수정 됨. GetInsertionPoint()에 대한 AppendText 앞에 다른 변수의 이름을 지정하십시오. 그렇지 않으면 파일의 끝을 가져옵니다.

관련 문제