Tkinter.Text索引表达式和unicode

时间:2017-05-18 23:56:18

标签: python unicode tkinter

让我们考虑以下代码:

from tkinter import Tk, Text

root = Tk()

text = Text(root)

text.insert("end", "abcdefgh\nабвгґдеє\n一伊依医咿噫欹泆")

print(text.index("1.4+1l"), text.index("1.4+2l"))
print(text.index("3.4-1l"), text.index("3.4-2l"))

有些人(例如我)会希望它打印2.4 3.42.4 1.4,因为+1l-1l应该保留列,如果该行很长足够。而是打印2.2 3.22.6 1.8。看起来它取决于编码每个字符所需的字节数。

应该这样吗?它在某处记录了吗?我应该使用像

这样的东西
line, column = old_index.split(".")
new_index = text.index(f"{line+1}.{column}")
如果我关心要保留的列,那么

而不是+1l

1 个答案:

答案 0 :(得分:1)

问题似乎与Tk相关,而不是与Python相关:

package require Tk 8.6

pack [text .t]
.t insert end "abcdefgh\nабвгґдеє\n一伊依医咿噫欹泆"

puts "[.t index 1.4+1l] [.t index 1.4+2l]"
puts "[.t index 3.4-1l] [.t index 3.4-2l]"

exit 0

输出:

2.2 3.2
2.6 1.8

所以我问second question