Tkinter テキストボックスから入力を取得する方法
胡金庫
2023年1月30日
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"
と同じです。
著者: 胡金庫