本記事では、”GUI“を作成する際に上記のようなメッセージボックスを表示させる方法を分かりやすく解説していきます!
Word や Excel などで意図せずウィンドウを閉じそうになってしまったときに、以下のようなメッセージボックスが表示されたことで大切なデータを消してしまわずに済んだ経験はありませんか?
私自身、メッセージボックスのおかげでデータを消してしまわずに救われたことが何度もあります(笑)
自分自身でWEBアプリケーションを作成するにあたって、このメッセージボックスを導入することで本格的なWEBアプリに一歩近づけると思います!
☆本記事の信頼性
自動化アプリケーション作成に携わっている私が、初心者にも分かりやすくプログラミングの基礎を紹介しています。
メッセージボックスの使い方
tkinterには、簡単にメッセージボックスを表示させるための関数が容易されています。
冒頭で示したメッセージボックスは、以下のコードを書くだけで表示させることができます!
import tkinter as tk
from tkinter import messagebox
#ウィンドウが閉じられようとしている時に実行する関数を定義
def callback():
if messagebox.askyesno("閉じるが押されました","本当に終了しますか?"):
root.destroy()
root=tk.Tk()
root.protocol("WM_DELETE_WINDOW",callback) #ウィンドウが閉じられる直前に通知するメソッド
root.mainloop()
ここで、def関数というものは「信号が与えられた時だけ実行されるパーツのようなもの」と捉えてください。
root.protocol("WM_DELETE_WINDOW",callback)
上記のコマンドはやや難解なコードに思えるかもしれませんが、
ここでは “protocol()” メソッドに用意された “WM_DELETE_WINDOW” によってウィンドウを閉じる際に信号を送れるように定義しています。
そして、その指令を第二引数に定義した関数(今回は “def callback“)に引き渡し実行させるという仕組みになっています。
def関数内では、tkinter の messagebox モジュールを利用し [はい]/[いいえ] ボタンが配置されたメッセージボックスである askyesno() を呼び出しています。そして [はい] が押された場合に if 文が処理され、ウィンドウが閉じられるというわけです。
if messagebox.askyesno("閉じるが押されました","本当に終了しますか?"):
root.destroy()
その他のオプション(引数)の指定
messagebox モジュールには第二引数の後に以下のようなオプションを指定してウィンドウをカスタムすることができます。
ご自身で実際にメッセージボックスにオプションを追加して試してみて下さい!
detail=” 追加メッセージ “ | 詳細メッセージの追加 |
default=”abort” or “retry” or “ignore“ | 表示ボタンの変更 |
icon=”error” or “info” or “question” or “warning“ | アイコンの変更 |
その他のメッセージボックスの種類については後半部分で解説しています!
Python学習に役立つ書籍&モノを紹介しています!参考にしてみてください!
その他のメッセージボックスの種類
戻り値が1つのみのメッセージボックス
・showinfo() :お知らせを表示する
メッセージボックスを用いてユーザーにお知らせを表示させることができます。
コードは以下のように書きます。
第一引数にはメッセージウィンドウのウィンドウ名を入力し、第二引数にはお知らせしたい内容を入力します。
messagebox.showinfo("確認","今日はヘアカットの予定があります")
・showerror() :エラー表示をする
メッセージボックスを用いてユーザーにエラー表示をさせることができます。
コードは以下のように書きます。
こちらも同様に、第一引数にはメッセージウィンドウのウィンドウ名を入力し、第二引数にはお知らせしたい内容を入力します。
messagebox.showerror("エラー","入力内容に誤りがあります")
・showwarning() :警告する
メッセージボックスを用いてユーザーに警告文を表示させることができます。
コードは以下のように書きます。
こちらも同様に、第一引数にはメッセージウィンドウのウィンドウ名を入力し、第二引数にはお知らせしたい内容を入力します。
messagebox.showwarning("警告","デバイスの温度が高くなっています")
戻り値を選択できるメッセージボックス
次に、文頭でも紹介した messagebox.askyesno() と同様にメッセージボックスに選択肢を表示させられるメソッドをいくつか紹介したいと思います!
・askquestion()
messagebox.askquestion() では、戻り値が “YES” , “NO” の質問を表示させることができます。
messagebox.askquestion("質問","あなたはラーメンがすきですか?")
・askokcancel()
messagebox.askokcancel() では、戻り値が “True (OK)” , “False (CANCEL)” の質問を表示させることができます。
messagebox.askokcancel("質問","ウィンドウを閉じてもよいですか?")
・askretrycancel()
messagebox.askretrycancel() では、
戻り値が “True (RETRY)” , “False (CANCEL)” の質問を表示させることができます。
・askyesnocancel()
messagebox.askyesnocancel() では、戻り値が “True (RETRY)” , “False (NO)” , “None(CANCEL)” の質問を表示させることができます。
messagebox.askyesnocancel("質問","今日は映画を観に行きませんか?")
たくさんの型が用意されていたので用途に合わせて使い分けてみてください!
メッセージボックスの表示方法については以上となります。
最後まで見ていただきありがとうございました!
次の記事では、ウィンドウ上に図形を表示させる方法を解説しています。
是非参考にしてみて下さい!