簡體   English   中英

如何讓 tkinter 文本小部件識別索引中的行?

[英]How do you make the tkinter text widget recognise lines in the index?

我正在努力在 Tkinter 的文本小部件中突出顯示文本綠色的選定部分。

據我了解,在 Tkinter 上,第二行的索引,文本的第四個字符將是 2.04。 出於某種原因,它無法識別新行,並且十進制數不斷增加到數百個,所以一旦文本的總字符超過 99,我就會努力突出顯示單詞。當它這樣做時,它會在所選單詞之后突出顯示大量文本在綠色。

我已將文本小部件的最大寬度設置為 99 個字符以使索引創建行,但它仍然沒有做任何事情。

為澄清起見,我試圖用此代碼以綠色突出顯示“計算”一詞。

from tkinter import *

window = Tk()
text_window = Text(window, height=10, width=99, wrap=WORD)
text_window.insert(INSERT, sample_text)
text_window.configure(state=DISABLED)
text_window.pack()

countVar = StringVar()
pos = text_window.search("calculates", "1.0", stopindex="end", count=countVar)
end_num = float(countVar.get()) / 100
position = float(pos)
print(position)
print(end_num)
end_point = position + end_num
text_window.tag_configure("search", background="green")
text_window.tag_add("search", pos, end_point)


window.mainloop()

"2.04"無效。 它會起作用,但像"2.08"這樣的東西不會,因為08是一個無效的八進制數。 文本小部件索引必須是有效 integer、句點和另一個有效 integer 形式的字符串。

文本小部件索引還支持修飾符,因此您可以輕松添加或減去字符。 在您的情況下,它看起來像這樣:

end_point = f"{pos}+{countVar.get()}chars"

或者

end_point = f"{pos}+{countVar.get()}c"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM