【Python tkinter】テキストボックスから値を取得・セット・クリアする方法

時計 2020.05.02 / 時計

【Python tkinter】テキストボックスから値を取得・セット・クリアする方法

tkinterで作成・配置したEntryウィジェット(テキストボックス)から文字列を取得セットクリアする方法を解説いたします。

tkinterによるGUIアプリケーション作成の基本は下記リンクから確認できます。

Entryウィジェットの操作を理解することにより、GUIアプリケーションの幅が広がりますので、ぜひマスターしてください。

完成するGUIアプリ

今回の解説で作成するアプリは以下のGUI画面になります。

GUIの画面

テキストボックスにはあらかじめ文字が入力されています。

実行のボタンを押すことにより下記のインフォメーションメッセージが表示されます。

GUI画面で誕生日のお知らせ

テキストボックスに入力されている文字列を取得して、メッセージを表示します。

ここでOKを押すと、最初の画面から文字列が削除され、テキストボックスは空の状態になります。

GUI画面:テキストボックスが空になる

このGUIプログラムを作成しながら、テキストボックスから文字列を取得・セット・クリアする方法を解説していきます。

GUI画面の作成

まずはGUIの画面を作成します。以下に記すコードをコピーして使ってください。

# tkinterのインポート
import tkinter as tk
import tkinter.ttk as ttk

# rootフレームの設定
root = tk.Tk()
root.title("文字列の取得・セット・クリア")
root.geometry("200x100")

# フレームの作成と設置
frame = ttk.Frame(root)
frame.grid(column=0, row=0, sticky=tk.NSEW, padx=5, pady=10)

# 各種ウィジェットの作成
label = ttk.Label(frame, text="誕生日:")
entry = ttk.Entry(frame)
button_execute = ttk.Button(frame, text="実行", command=birthday)

# 各種ウィジェットの設置
label.grid(row=0, column=0)
entry.grid(row=0, column=1)
button_execute.grid(row=1, column=1)

root.mainloop()

それでは次にテキストボックス(Entryウィジェット)に文字列をセットしましょう。

Entryへ文字列をセット:insert

テキストボックス(Entryウィジェット)をセットするには、insertメソッドを使用します。

第1パラメーターにはセットする文字の位置を指定し、第2パラメーターにセットしたい文字列を指定します。

# Entryウィジェットへ文字列のセット
entry.insert(tk.END,"1999/01/01")

上記では文字をセットする位置に「tk.END」(tkinterをtkと省略していない場合はtkinter.END)としています。
これはテキストボックスの最後に追加するという意味です。

そして第2パラメーターに「1999/01/01」を指定しています。つまりテキストボックスにこの文字列をセットするという意味になります。

Entryから文字列を取得:get

次にButtonウィジェットをクリックしたら、メッセージボックスのインフォメーションを表示し、Entryウィジェットに入力された文字列を表示するプログラムを組みます。

まずはButtonウィジェットにクリックされたときに呼び出す関数を割り当てます。

button_execute = ttk.Button(frame, text="実行", command=birthday)

command属性を使って、Buttonウィジェットにbirthdayという関数を割り当てています。

これによりこのボタンがクリックされると事前に定義しているbirthday関数を呼び出します。

次にbirthday関数を定義しましょう。

# 関数birthdayの定義
def birthday():
messagebox.showinfo("誕生日","あなたの誕生日は" + entry.get() + "です")

defの後に関数名():を書き、その後に関数の内容を続けます。

クリックされたらメッセージボックスのインフォメーションを表示するので、「message.showinfo」を使っています。

message.showinfoの第2パラメーターにgetメソッドを使用して、Entryウィジェットの文字列を取得します。

entry.get()

Entryの文字列をクリア:delete

最後にEntryウィジェット内の文字列を削除するプログラムを関数birthdayの中に追加します。

entry.delete(0,tk.END)

deleteメソッドを使用してEntryウィジェット内の文字列を削除します。

第1パラメーターに削除開始位置、第2パラメーターに削除終了位置を指定します。
今回指定している「0, tk.END」はEntryウィジェット内のすべての文字列を削除するという意味です。

これで今回作成するGUIプログラムが完成しました。

# tkinterのインポート
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import messagebox

# 関数birthdayの定義
def birthday():
    messagebox.showinfo("誕生日","あなたの誕生日は" + entry.get() + "です")
    entry.delete(0,tk.END)

# rootフレームの設定
root = tk.Tk()
root.title("文字列の取得・セット・クリア")
root.geometry("200x100")

# フレームの作成と設置
frame = ttk.Frame(root)
frame.grid(column=0, row=0, sticky=tk.NSEW, padx=5, pady=10)

# 各種ウィジェットの作成
label = ttk.Label(frame, text="誕生日:")
entry = ttk.Entry(frame)
button_execute = ttk.Button(frame, text="実行", command=birthday)

# 各種ウィジェットの設置
label.grid(row=0, column=0)
entry.grid(row=0, column=1)
button_execute.grid(row=1, column=1)

# Entryウィジェットへ文字列のセット
entry.insert(tk.END,"1999/01/01")

root.mainloop()

まとめ

今回の「【Python tkinter】テキストボックスから値を取得・セット・クリアする方法」はいかがでしたでしょうか?

Entryウィジェットの文字列操作は、今後作成するPython tkinterアプリでたくさん使うはずです。

ぜひマスターして様々なアプリ開発に応用してください。