ウィンドウにクリックできるボタンを設置しよう!関数も実行させよう!

ウィンドウにクリックできるボタンを設置しよう!関数も実行させよう!

ボタンを設置しよう!

前回はウィンドウにラベルとエントリーを設置したよね。マウスをクリックして動く「ボタン」も同じように設置できるからやってみよう!書き方はこんな感じ。

# codeing=utf-8
import tkinter as tk

root = tk.Tk()
root.geometry("480x160")
root.title("数当てゲーム")

label_01 = tk.Label(root, text="4桁の数字をいれてね", font=("Helvetica",14))
label_01.place(x=20, y=20)

entry_01 = tk.Entry(width = 4, font=("Helvetica",28))
entry_01.place(x=20, y=45)

button_01 = tk.Button(root, text="チェック", font=("Helvetica",20))
button_01.place(x=100, y=54)

root.mainloop()

ボタンについて書いてるのは14,15行目。「tkinterでボタンを作る→place()を使って置く」っていう流れは前回と同じだね。

▽ 実行結果

ボタンをクリックしたら動く仕組みを作ろう!

ボタンが他と違うのは、押したら何かが動くってことだよね。その仕組みを作っていくよ。そのためには関数を使う。自分で関数を作って、クリックしたらそれを実行するっていうふうにするんだ。関数の作り方については前にもやったね。

まずはこんな関数を作ってみた。

# codeing=utf-8
import tkinter as tk

root = tk.Tk()
root.geometry("480x160")
root.title("数当てゲーム")

#ボタンをクリックしたとき
def ButtonClick():
    #処理を書く

label_01 = tk.Label(root, text="4桁の数字をいれてね", font=("Helvetica",14))
label_01.place(x=20, y=20)

entry_01 = tk.Entry(width = 4, font=("Helvetica",28))
entry_01.place(x=20, y=45)

button_01 = tk.Button(root, text="チェック", font=("Helvetica",20))
button_01.place(x=100, y=54)

root.mainloop()

追加したのは、8,9,10行目。defを使って「ButtonClick」という関数を作ったんだね。まだ実行する中身は書いてないよ。このまま実行するとエラーになっちゃうけど、後から中身を書けば大丈夫だよ。

次にクリックしたときに、ButtonClickを呼び出すようにする。これは、ボタンを作ったときの書き方に「command=関数名」と追記すればいいんだ。こんな感じ。

button_01 = tk.Button(root, text="チェック", font=("Helvetica",20), command=ButtonClick)

これで作ったボタンと関数ButtonClickが結びついた状態になる。ちなみに「クリックされたら」とか「キーがおされたら」みたいな動作のことを「イベント(event)」と言う。また、イベントと関数を結びつけて作っていく書き方を「イベントドリブン(event-driven)」と言うから覚えておこう!

メッセージを表示させてみよう!

ボタンと関数を結びつけるのはできたけど、まだ関数の中身が空っぽだったね。今回はお試しで、ここに「メッセージを出す」という動きを書いてみる。これもtkinterで出来るんだ。「messagebox」という関数を使うよ。まずはmessageboxをインポートしよう。

import tkinter.messagebox as tkmsg

名前はインポートするときの名前は「tkmsg」にしてみた。メッセージを出すときはmessageboxの中の「showinfo」という関数を使うよ。使い方はこんな感じ。

tkmsg.showinfo(“ウィンドウのタイトル”, “表示したい文字”)

今までのプログラムを全部まとめてみるとこんな感じ。メッセージについて追記したのは11行目だね。

# codeing=utf-8
import tkinter as tk
import tkinter.messagebox as tkmsg

root = tk.Tk()
root.geometry("480x160")
root.title("数当てゲーム")

#ボタンをクリックしたとき
def ButtonClick():
    tkmsg.showinfo("メッセージ", "クリックされた!")

label_01 = tk.Label(root, text="4桁の数字をいれてね", font=("Helvetica",14))
label_01.place(x=20, y=20)

entry_01 = tk.Entry(width = 4, font=("Helvetica",28))
entry_01.place(x=20, y=45)

button_01 = tk.Button(root, text="チェック", font=("Helvetica",20), command=ButtonClick)
button_01.place(x=100, y=54)

root.mainloop()

実行してみると、まずウィンドウが出て来る。つぎにその中のボタンをクリックすると、さらにメッセージが出てくるよ。

メッセージを出す関数はいろいろあるよ

今回はmessagaeboxの中の「showinfo」という関数を使ったよね。でもmessageboxの中には他にもメッセージを出すための関数がいろいろあるんだ。一覧表にまとめてみたから見てみよう。

関数 意味
showinfo メッセージを表示する
showwarning 警告文を表示する
showerror エラー文を表示する
askquestion 入力欄つきのメッセージを表示する
askokcancel 「OK」と「キャンセル」のボタンがついたメッセージを表示
askyesno 「はい」と「いいえ」のボタンがついたメッセージを表示
askretrycancel 「再試行」と「キャンセル」のボタンがついたメッセージを表示

一度に全部覚える必要はないので、こんなことも出来るだくらいに知っておこう!

今日のまとめ

  • tkinterでウィンドウにボタンを設置しよう!
  • 関数を作ってボタンで実行するようにしよう!
  • messageでメッセージを表示させよう!