IDLE使用tag_config來語法化Python代碼,它可以在過去15年的所有Python版本和主要操作系統上運行。
要知道爲什麼它似乎失敗了,你需要找到一個失敗的MCVE。沒有tix和滾動條開始。 (Tix在3.6中已棄用,並且錯誤未被修復。)另請注意,您的代碼對每個選擇使用相同的標記,以便在更改配置時適用於所有以前的選擇。
這裏是符合預期和預期的簡化代碼。
import tkinter as tk
import time
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert('1.0', "line 1\nline 2\nline 3\n")
text.tag_add('bg', '1.0', '1.4')
text.tag_config('bg', background='red')
root.update()
time.sleep(1)
text.tag_add('bg', '2.0', '2.4')
text.tag_config('bg', background='blue')
root.update()
你可以嘗試一步一步地修改它,直到它再現你的問題或做你想做的事。
編輯與示例修改:使用'sel.first'和'sel.last',而不是硬編碼索引。
import tkinter as tk
import time
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert('1.0', "line 1\nline 2\nline 3\n")
root.update() # make text visible for selection
input('select some text')
text.tag_add('bg', 'sel.first', 'sel.last')
text.tag_config('bg', background='red')
root.update() # make change visible
input('select some text')
text.tag_add('bg', 'sel.first', 'sel.last')
text.tag_config('bg', background='blue')
root.update() # make 2nd change visible
input('look at result')
在控制檯中運行。移動tk窗口,使控制檯和GUI都可見。根據提示進行選擇。點擊控制檯*並點擊返回以允許輸入語句返回。重複。對我來說,結果是兩種選擇都變成了藍色。我建議在下一個實驗中更改字體而不是bg顏色。
- 在Windows上,當單擊控制檯時,tk窗口中的選擇突出顯示消失,因爲Windows一次只允許在一個窗口中進行可見選擇。但是,選擇標記仍然存在於文本小部件中,因此tag_add仍然可以工作。
在這裏,您已將標記範圍硬編碼爲1.0到1.4。問題似乎與範圍定義爲'sel.first'和'sel.last'。在第一次傳球之後,從第二次傳球開始,這個選擇不是我實際選擇的文字。它正在考慮TextArea上的整個文本。 – SubhasisM
什麼'似乎是'的問題往往不是什麼問題。這就是爲什麼我建議你做最小的改變實驗 - 找出問題所在。請重新閱讀我的建議。我做了將硬編碼索引更改爲選定索引的實驗,而後者本身不是問題。你應該繼續下一個實驗 - 改變字體而不是顏色。 –