3
は、私たちは、次のコードを考えてみましょう:Tkinter.Textのインデックス式とUnicode
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"))
+1l
と-1l
が列を維持することになっているため、一部の人々(例えば、私にとっては)それは2.4 3.4
と2.4 1.4
を、印刷することを期待しますその行が十分に長い場合。代わりに、2.2 3.2
と2.6 1.8
を出力します。各文字をエンコードするのに必要なバイト数に依存するようです。
このようにする必要がありますか?それはどこかに文書化されていますか?私は列が保存されて心配している場合、私はちょうど
line, column = old_index.split(".")
new_index = text.index(f"{line+1}.{column}")
代わりの
+1l
のようなものを使用する必要がありますか?
結果を複製することはできますが、説明することはできません。基礎となるtkライブラリにはバグがあるようです。 –
@ブライアン・オークリー確かに、私は純粋なTkでそれを再現できます – zabolekar