Tkinter テキストボックスから入力を取得する方法
胡金庫
2023年1月30日
Tkinter
Tkinter Text
Tkinter Text ウィジェットには、start 位置引数を持つテキストボックスからの入力を返す get() メソッドと、フェッチするテキストの終了位置を指定するオプションの end 引数があります。
get(start, end=None)
end が指定されていない場合、start の位置で指定された 1 文字のみが返されます。
Tkinter テキストウィジェットから入力を取得するコード例
import tkinter as tk
root = tk.Tk()
root.geometry("400x240")
def getTextInput():
result = textExample.get("1.0", "end")
print(result)
textExample = tk.Text(root, height=10)
textExample.pack()
btnRead = tk.Button(root, height=1, width=10, text="Read", command=getTextInput)
btnRead.pack()
root.mainloop()
result = textExample.get("1.0", "end")
テキストウィジェットの最初の文字の位置は 1.0 であり、数値 1.0 または文字列"1.0"として参照できます。
"end"は、Text ボックスの最後まで入力を読み取ることを意味します。ここでは、文字列"end"の代わりに tk.END を使用することもできます。

返されるテキストの終了位置として "end"を指定した場合の小さな問題には、上記のアニメーションからわかるように、テキスト文字列の最後に改行 \n 文字も含まれます。
返される入力に改行が必要ない場合は、get メソッドの"end"引数を"end-1c"に変更できます。
"end-1c"は、位置が "end"の 1 文字前であることを意味します。
Tkinter テキストウィジェットから最後に改行なしで入力をフェッチするコード例
import tkinter as tk
root = tk.Tk()
root.geometry("400x240")
def getTextInput():
result = textExample.get(1.0, tk.END + "-1c")
print(result)
textExample = tk.Text(root, height=10)
textExample.pack()
btnRead = tk.Button(root, height=1, width=10, text="Read", command=getTextInput)
btnRead.pack()
root.mainloop()

ここでは、"end-1c"のほかに tk.END+"-1c"を使用して最後の文字を削除することもできます-\n、tk.END = "end"、つまり tk.END+"-1c"は"end"+"-1c"="end-1c"と同じです。
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: 胡金庫
