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

胡金庫 2023年1月30日
  1. Tkinter テキストウィジェットから入力を取得するコード例
  2. Tkinter テキストウィジェットから最後に改行なしで入力をフェッチするコード例
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"と同じです。

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Tkinter Text