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()
을 인쇄했습니다. 맞습니다. 나는 무엇이 잘못되었는지 모른다. 도움이 필요하십니까?
코드가 멋지게 보이지 않습니다 ... 첫 번째 줄은 for 루프입니다 ... – Mua