Tkinter テキストボックスから入力を取得する方法

  1. Tkinter テキストウィジェットから入力を取得するコード例
  2. Tkinter テキストウィジェットから最後に「改行」なしで入力をフェッチするコード例

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 を使用することもできます。

Tkinter get Text Box Input_Inculde new line

返されるテキストの終了位置として "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()

Tkinter get Text Box Input_Not Inculde new line

ここでは、"end-1c"のほかに tk.END+"-1c"を使用して最後の文字を削除することもできます-\ntk.END="end"、つまり tk.END+"-1c""end"+"-1c"="end-1c"と同じです。

関連記事 - Tkinter Text

  • Tkinter テキストボックスの内容を削除する方法
  • comments powered by Disqus