機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【Part3】python3-tkinterの使い方 - 入力項とボタンでアクションをさせよう!

【Part3】python3-tkinterの使い方

1.前回のおさらい

前回はウインドに入力項を表示することができました。

f:id:stjun:20190512164736j:plain

(前回までの進捗画面)

今回はウインドの中にボタンを追加し、ボタンと入力項を組み合わせて、ボタンを押すと入力項に書かれた文字を表示する機能を追加します。

 

2.完成コード

※赤字が今回追加部分、黒字は前回までの作成部分

 <コード部分>

import tkinter as tk #tkinterの読み込み
import tkinter.messagebox as mb 

 

#ウインド(win)を作成
win=tk.Tk()
win.title("Hello world")
win.geometry("500x300") #ウインドの大きさを200×300に設定


#入力項(変数名:Entry_box)の作成
Entry_box=tk.Entry(width=40,foreground='#000000', background='#FFFFFF')
Entry_box.insert(tk.END,"何か入力してください")
Entry_box.place(x=50,y=10)


#ボタンを押したときに入力項の文字を表示する機能
def display_action():
      text=Entry_box.get()
      mb.showinfo("title",text)

#ボタン(変数名:Button)の作成
Button=tk.Button(win,width=5,background="#99CCFF",text="ボタン",command=display_action)
Button.place(x=300,y=5)


#ウインドを動かす
win.mainloop()

 <コードはここまで>

 

これを実行すると入力項「何か入力してください」の横に水色のボタンができました。例えば入力項に「ユーザーさんこんにちは!」と書き、ボタンを押すと「ユーザーさんこんにちは!」というメッセージボックスがでます。

f:id:stjun:20190512175015j:plain

f:id:stjun:20190512175024j:plain

 

<説明>

import tkinter.messagebox as mb

意味:tkinterのmessageboxという機能を使います、messageboxは長いので以降はmbと書きます。

メッセージボックスを出現させるために必須なので、忘れず書きましょう。

 

 

#ボタンを押したときに入力項の文字を表示する機能
def display_action():
      text=Entry_box.get()
      mb.showinfo("title",text)

意味:ボタンをクリックした時に、どんなアクションをするかを設定。

def OO ():はpythonの関数の書き方です。また2行目からは頭に6文字空白を入れる必要があります。これを忘れるとエラーになるので気を付けましょう。

どうして関数にするかというと、複数のボタンに同じ機能を持たせたい場合、関数に機能をまとめてしまえば、各ボタンは関数を引用するだけで機能を持つことができ非常に便利・効率的だからです。今回は1個のボタンしかないですがせっかくなので使ってみましょう。

 

text=Entry_box.get()

意味:Entry_boxに書かれた文字をget()で受け取り、textに入れる。

入力項に「ユーザーさんこんにちは!」と書きました。これをget()関数で取り出しtextという変数に入れてあげます。

 

mb.showinfo("title",text)

意味:titleというタイトルのウインドでtext(「ユーザーさんこんにちは!」)を表示します。

 

 

 ※その他注意

なぜボタンを作成するより先に、ボタンを押したときの関数を記述するのか不思議に思った方もいるかと思います。これはボタンを作ると同時に関数の機能を追加するので、関数が先にないとボタンに関数を追加できなくてエラーになるからです。

必ず関数(やりたい機能)を定義⇒ボタンの順に作成しましょう。

 

#ボタン(変数名:Button)の作成
Button=tk.Button(win,width=5,background="#99CCFF",text="ボタン",command=display_action)
Button.place(x=300,y=5)

意味:ウインド(win)の中に、幅が5,背景が水色でボタンと書かれたボタンを作成し、ボタンがクリックされたらdisplay_actionの機能を実行します。またボタンの位置はx=300,y=5に作ります。

ほとんど入力項を作った時と同じです。ボタンを押したときにdispla_action()の関数が実行できるよう、忘れずcommandを入れましょう。これを忘れるとボタンをクリックしても何も起きません。

 

3.まとめと次回

<今回のコード:コピーして使えます>

import tkinter as tk #tkinterの読み込み
import tkinter.messagebox as mb

#ウインド(win)を作成
win=tk.Tk()
win.title("Hello world")
win.geometry("500x300") #ウインドの大きさを200×300に設定


#入力項(変数名:Entry_box)の作成
Entry_box=tk.Entry(width=40,foreground='#000000', background='#FFFFFF')
Entry_box.insert(tk.END,"何か入力してください")
Entry_box.place(x=50,y=10)


#ボタンを押したときに入力項の文字を表示する機能
def display_action():
    text=Entry_box.get()
    mb.showinfo("title",text)
    
#ボタン(変数名:Button)の作成
Button=tk.Button(win,width=5,background="#99CCFF",text="ボタン",command=display_action)
Button.place(x=300,y=5)


#ウインドを動かす
win.mainloop()

今回はボタンを作成し、ボタンを押すと入力項に書かれた文字を読み取って表示する機能を作りました。

これを利用すれば、例えば身長と体重を入力したらBMIを表示するような機能とかも作れそうですね。

次回はボタンをクリックすると、入力項に書かれた数字の数だけ新たな入力項が出現する機能を作ってみたいと思います。