初心者でもPythonを使ってみよう

趣味と実益を兼ねたPython学習記

【スポンサーリンク】



tkinter テキストボックス(Entry)とボタン(Button)の使い方 Python

tkinterのもっとも基礎的なウィジェットである、テキストボックス(Entry)とボタン(Button)の使い方を、実際にアプリを作成してまとめました。

目次

テキストボックスとボタンの概要

テキストボックスはユーザーが任意の入力を行うためのウィジェットです。キーボードを用いて自由に入力することができます。

また、ボタンはクリック時に様々な機能を開始するスイッチとなるウィジェットです。

どちらも、非常に使用頻度の高い便利なウィジェットです。

今回は、以下の2つの機能を持つ簡単なアプリを作成し、動作を確認していきます。

  1. ボタンクリックでテキストボックスの値取得して表示
  2. ボタンクリックでテキストボックスの値の操作

アプリ概要①

まずは完成したアプリの外観を示します。

f:id:vigilantPotato:20190318214018j:plain

上から、テキストボックスとボタンが並べて表示してあります。

テキストボックスには、ユーザーが任意の文字列を入力することができます。

f:id:vigilantPotato:20190318214213j:plain

この状態でボタンをクリックしてみます。

f:id:vigilantPotato:20190318214422j:plain

ボタンのタイトルが、テキストボックスに入力した値に変化しました。

テキストボックスへの値の入力と、ボタンクリックによる値の取得を行うことができました。

コードの解説①

まずはtkinterのインポートです。

import tkinter

次に、ボタンクリック時に実行する関数を記述します。

def change_title():
    button1["text"] = entryBox.get() #button1のタイトルをテキストボックスの値に変更

button1は後程作成するtkinterのボタンウィジェットインスタンスで、textオプションを用いてボタンに表示するタイトルを変更します。

また、entryBoxも後程作成するテキストボックスウィジェットインスタンスで、.getメソッドを用いて入力した値を読み取ります。

最後に、各ウィジェットを生成していきます。

root = tkinter.Tk()

#テキストボックス
entryBox = tkinter.Entry(master=root)
entryBox.pack()

#ボタン
button1 = tkinter.Button(master=root, text="Button", width=15, bg="lightblue", command=change_title)
button1.pack()

root.mainloop()

テキストボックス、ボタンウィジェットを生成・表示させています。

ボタンウィジェット生成時には、commandオプションを用いることでクリック時に実行する関数を設定できます。

ここでは、change_title関数を実行するように設定しています。

同時に、text、width、bgオプションでボタンの見た目を設定しています。

アプリ概要②

次は、テキストボックス値を操作する機能を追加していきます。

完成したアプリの画面は以下の通りです。

f:id:vigilantPotato:20190318221732j:plain

「set default」ボタンが追加されました。

このボタンをクリックすると、以下の通りテキストボックスには初期値(今回は「default」)が入力されます。

f:id:vigilantPotato:20190318221920j:plain

次に、テキストボックスに適当な値を入力し、先ほど作成したの値取得用ボタンを押してタイトルを変更しておきます。

f:id:vigilantPotato:20190318222025j:plain

そして、その状態で「set default」ボタンを押すと、値取得用ボタンのタイトルも初期値に変更してくれます。

f:id:vigilantPotato:20190318222322j:plain

コードの解説②

追加した部分のみ解説していきます。

まずは、「set default」ボタンクリック時に実行する関数を追加します。

def set_default():
    entryBox.delete(0, tkinter.END) #テキストボックスをクリア
    entryBox.insert(tkinter.END, "default")  #テキストボックスにデフォルト値を入力
    button1["text"] = "Button"  #ボタン1のタイトルを初期化

entryBoxの中身を、.deleteメソッドを用いて削除しています。

(0, tkinter.END)は、最初の文字から最後までという意味です。

次に、.insertメソッドを用いて、entryBoxに「default」を入力しています。

最後に、button1のtextオプションでタイトルの初期化を実行しています。

次は、初期化用のボタンを生成します。

#ボタン(初期化用)
button2 = tkinter.Button(master=root, text="set default", width=15, bg="lightyellow", command=set_default)
button2.pack()

先ほどと同様に、commandオプションを用いて、クリック時にset_default関数を実行するように設定しています。

コード全文

import tkinter

def change_title():
    button1["text"] = entryBox.get()

def set_default():
    entryBox.delete(0, tkinter.END) #テキストボックスをクリア
    entryBox.insert(tkinter.END, "default")  #テキストボックスにデフォルト値を入力
    button1["text"] = "Button"  #ボタン1のタイトルを初期化

root = tkinter.Tk()

#テキストボックス
entryBox = tkinter.Entry(master=root)
entryBox.pack()

#ボタン
button1 = tkinter.Button(master=root, text="Button", width=15, bg="lightblue", command=change_title)
button1.pack()

#ボタン(初期化用)
button2 = tkinter.Button(master=root, text="set default", width=15, bg="lightyellow", command=set_default)
button2.pack()

root.mainloop()