HOWTO · Tkinter

ボタンで Tkinter エントリウィジェットのテキストを設定する方法

Tkinter Entry ウィジェットのコンテンツまたはテキストを設定する 2つのメソッドがあり、1つは Tkinter Entry ウィジェットの削除と挿入のメソッドの組み合わせであり、もう 1つは StringVar 変数を使用しています。

ボタンをクリックして Tkinter Entry ウィジェットのテキストを設定または変更するには、2つの方法があります。

  1. Tkinter の deleteinsert メソッド
  2. Tkinter StringVar メソッド

Tkinter の delete および insert メソッドで Entry のコンテンツを設定

Tkinter の Entry ウィジェットには、Entry のコンテンツを設定するための専用の set メソッドがありません。コンテンツを完全に変更する必要がある場合は、まず既存のコンテンツを削除してから、新しいコンテンツを挿入する必要があります。

delete および insert メソッドを使用して Entry にテキストを設定するための完全な作業コード

import tkinter as tk

root = tk.Tk()
root.geometry("400x50")


def setTextInput(text):
    textExample.delete(0, "end")
    textExample.insert(0, text)


textExample = tk.Entry(root)
textExample.pack()

btnSet = tk.Button(
    root, height=1, width=10, text="Set", command=lambda: setTextInput("new content")
)
btnSet.pack()

root.mainloop()

Tkinter Entry_delete のコンテンツと Set メソッド

textExample.delete(0, "end")

Entrydelete メソッドは、Entry の指定された範囲の文字を削除します。

0Entry ウィジェットのコンテンツの最初の文字で、"end"はコンテンツの最後の文字です。したがって、delete(0, "end") は、[エントリ]ボックス内のすべてのコンテンツを削除します。

textExample.insert(0, text)

insert メソッドは指定された位置にテキストを挿入します。上記のコードでは、最初に text を挿入します。

Tkinter の Entry ウィジェットのコンテンツを設定する Tkinter の StringVar メソッド

Tkinter Entry ウィジェットのコンテンツが StringVar オブジェクトに関連付けられている場合、StringVar の値が更新されるたびに、Tkinter Entry ウィジェットのコンテンツが自動的に変更される可能性があります。

StringVar オブジェクトを使用して Entry にテキストを設定するための完全な作業コード

import tkinter as tk

root = tk.Tk()
root.geometry("400x50")


def setTextInput(text):
    textEntry.set(text)


textEntry = tk.StringVar()

textExample = tk.Entry(root, textvariable=textEntry)
textExample.pack()

btnSet = tk.Button(
    root, height=1, width=10, text="Set", command=lambda: setTextInput("new content")
)
btnSet.pack()

root.mainloop()
textEntry = tk.StringVar()

textExample = tk.Entry(root, textvariable=textEntry)

textEntryStringVar オブジェクトであり、テキストコンテンツに関連付けられています。つまり、Entry ウィジェットの textvariable オプションに関連付けられています。

textEntry.set(text)

textEntry が新しい値 text を持つように更新されると、textvariable が関連付けられているウィジェットが自動的に更新されます。