【Python】tkinter.messageboxでメッセージボックスを表示

プログラミング

tkinterでメッセージボックスを表示するには、tkinter.messageboxを利用します。
tkMessageBoxではないので、勘違いしないようにしてください。

tkMessageBoxは、古いバージョンのPythonで動いたモジュールです。
Python 3.6以降(サポート中のバージョン)であれば、tkinter.messageboxで間違いありません。

本記事の内容

  • tkinter.messageboxとは?
  • Information(情報)
  • Warning(警告)
  • Question(質問)

それでは、上記に沿って解説していきます。

tkinter.messageboxとは?

tkinter.messageboxは、tkinterに含まれるモジュールです。
主な機能は、メッセージボックスの表示となります。

tkinterについては、次の記事で詳しく説明しています。

tkinterは、Pythonの標準ライブラリです。
したがって、tkinter.messageboxのために何かをインストールする必要はありません。

また、tkinter.messageboxには以下の3種類のパターンが用意されています。

  • Information(情報)
  • Warning(警告)
  • Question(質問)

それぞれのパターン毎に下記で説明していきます。
なお、説明の際には次の記事で紹介しているサンプルコードを利用します。

サンプルコード

import tkinter

def fnc_do_1(event):
    print(1)

# 画面作成
window = tkinter.Tk()
window.geometry("400x300")
window.title("ボタンを表示する")

# ボタン作成
btn = tkinter.Button(window, text="ボタン")

# ボタン表示
btn.place(x=125, y=230, width=150, height=40)

# ボタンに関数をbind
btn.bind("<Button-1>", fnc_do_1)

# 画面表示(常駐)
window.mainloop()

ライブラリを追加しなくても、コピペでそのまま動きます。
詳細については、記事をご覧ください。

このコードをベースにして、各パターンを説明していきます。
真っ先に対応すべきなのは、モジュールの読み込みです。
これを追加しないと、エラーになります。

from tkinter import messagebox

それ以外では、ボタンをクリックした際に呼ばれる処理を変更していきます。

def fnc_do_1(event):
    print(1)

それでは、まずはInformation(情報)について確認していきます。

Information(情報)

Informationには、関数tkinter.messagebox.showinfoが用意されています。

関数定義

tkinter.messagebox.showinfo(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.showinfo(title="タイトル", message="メッセージ")
    print(res)

変更後にプログラムを実行して、ボタンをクリックすると以下が表示されます。

「OK」ボタン(「×」も含む)をクリックすると、コンソールには「ok」が表示されます。

選択したボタンの結果(戻り値)を取得できるということです。
この関数では「ok」だけなので、ほとんど意味はありませんけどね。

なお、オプション(**options)には以下の値を設定することができます。

default表示ボタン
detail詳細メッセージ
iconアイコン
parent親ウィンドウ
typeボタンタイプ

とりあえず、「detail」だけを覚えておきましょう。
それ以外は、必要な都度マニュアルを読めばいいぐらいのモノです。

個人的には、「icon」を利用するかどうかだと思います。
では、「detail」を追加した場合の動きを確認しましょう。

コードは、以下のように変更しています。

def fnc_do_1(event):
    res = tkinter.messagebox.showinfo(
        title="タイトル",
        message="メッセージ",
        detail="詳細メッセージ1行目\n詳細メッセージ2行目")
    print(res)

メッセージボックスは、以下となります。

以上、Information(情報)のパターンについて説明しました。
次は、Warning(警告)のパターンを確認します。

Warning(警告)

Warningには、以下の関数が用意されています。

  • tkinter.messagebox.showwarning
  • tkinter.messagebox.showerror

それぞれを下記で説明します。

tkinter.messagebox.showwarning

関数定義

tkinter.messagebox.showwarning(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.showwarning(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

「OK」ボタン(「×」も含む)をクリックすると、コンソールには「ok」が表示されます。

tkinter.messagebox.showerror

関数定義

tkinter.messagebox.showerror(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.showerror(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

「OK」ボタン(「×」も含む)をクリックすると、コンソールには「ok」が表示されます。

以上、Warning(警告)のパターンについて説明しました。
次は、Question(質問)のパターンを確認します。

Question(質問)

Questionには、以下の関数が用意されています。

  • tkinter.messagebox.askquestion
  • tkinter.messagebox.askokcancel
  • tkinter.messagebox.askretrycancel
  • tkinter.messagebox.askyesno
  • tkinter.messagebox.askyesnocancel

それぞれを下記で説明します。

tkinter.messagebox.askquestion

関数定義

tkinter.messagebox.askquestion(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.askquestion(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

ボタンと戻り値の関係は、以下。

ボタン戻り値
はい(Y)yes
いいえ(N)no
×※押せない

tkinter.messagebox.askokcancel

関数定義

tkinter.messagebox.askokcancel(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.askokcancel(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

ボタンと戻り値の関係は、以下。

ボタン戻り値
OKTrue
キャンセルFalse
×False

tkinter.messagebox.askretrycancel

関数定義

tkinter.messagebox.askretrycancel(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.askretrycancel(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

ボタンと戻り値の関係は、以下。

ボタン戻り値
再試行(R)True
キャンセルFalse
×False

tkinter.messagebox.askyesno

関数定義

tkinter.messagebox.askyesno(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.askyesno(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

ボタンと戻り値の関係は、以下。

ボタン戻り値
はい(Y)True
いいえ(N)False
×※押せない

tkinter.messagebox.askyesnocancel

関数定義

tkinter.messagebox.askyesnocancel(title=None, message=None, **options)

サンプルコードを次のように変更します。

def fnc_do_1(event):
    res = tkinter.messagebox.askyesnocancel(title="タイトル", message="メッセージ")
    print(res)

メッセージボックスは、以下となります。

ボタンと戻り値の関係は、以下。

ボタン戻り値
はい(Y)True
いいえ(N)False
キャンセルNone
×None

以上、Question(質問)のパターンについて説明しました。

タイトルとURLをコピーしました