2012-06-12 48 views
3

我有一個Tkinter文本框設置爲顯示文件的內容。一個例子從將是如下:Tkinter動態更改文本框中循環字符串的文本顏色

SUCCESS - Downloaded example.jpg 
File was 13KB in size 

我想要做的是有包含單詞「成功」有它的文本顏色變爲藍色的任何行。請注意,我需要這是動態的,因爲這個單詞可能在一個文件中被找到幾百次,並且沒有辦法預測它將會在哪裏。 這是我用來輸出文件內容到文本框的代碼。哪些工作正常。

log = open(logFile, 'r') 
while 1: 
    line = log.readline() 
    if len(line) == 0: 
     break 
    else: 
     self.txtLog.insert(Tkinter.END, line) 
     self.txtLog.insert(Tkinter.END, os.linesep) 
log.close() 

我想使用tag_add和tag_config像下面的示例行,但無濟於事。

`self.txtLog.tag_add("success", "1.0", "1.8") 
    self.txtLog.tag_config("success", foreground="blue")` 

`

回答

3

您需要配置一個標籤,並添加文字到最後時指定該標籤。 這應該工作(雖然未測試):

self.txtLog.tag_config("success", foreground="blue", font="Arial 10 italic") 
log = open(logFile, 'r') 
while 1: 
    line = log.readline() 
    if len(line) == 0: 
     break 
    else: 
     tags = ("success",) if line.startswith("SUCCESS") else None 
     self.txtLog.insert(Tkinter.END, line+os.linesep, tags) 
log.close() 

另外,我剛纔注意到,您tag_config之前使用tag_add,我相信應該是相反的,它的工作。

+0

感謝您的幫助!我試過你的代碼。關於'.startswith'有一個錯誤,因爲它需要從一個字符串中調用,並且在那裏放置一個文件。我把'line'字符串放在了它的位置上。之後,沒有錯誤,但代碼不顯示任何結果 – Joe

+0

是的我的意思是'線路'。 :)你什麼意思沒有結果?一個空的文本框?還是沒有顏色? – jadkik94

+0

我更新了代碼,也許它是空白列表而不是無...還要確保文本沒有被禁用(我曾經遇到過這個問題) – jadkik94