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)
メッセージボックスは、以下となります。
ボタンと戻り値の関係は、以下。
ボタン | 戻り値 |
OK | True |
キャンセル | 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(質問)のパターンについて説明しました。