KURORO BLOGのロゴ

このエントリーをはてなブックマークに追加
【サンプルコード付】Tkinterで使われるmessageboxの活用法を解説

【サンプルコード付】Tkinterで使われるmessageboxの活用法を解説

今回はTkinterで使われるmessageboxの活用法を、サンプルコードを用いて解説いたします。messageboxを使いたい、サンプルコードを通して学びを深めたい方へおすすめです。ぜひ最後までご一読ください。

目次
  1. そもそもTkinterで使われるmessageboxとは?
    1. messageboxを使う目的
  2. 【8種類】messageboxの使い方
    1. showinfo
    2. showwarning
    3. showerror
    4. askquestion
    5. askokcancel
    6. askretrycancel
    7. askyesno
    8. askyesnocancel
  3. Tkinterで使われるmessageboxのoption
    1. detail
    2. icon
    3. type
  4. まとめ
  5. 参考文献
目次を開く⬇︎

そもそもTkinterで使われるmessageboxとは?

Tkinterで使われるmessageboxとは、メッセージを伝えるために、操作の途中で一時的に開かれる小さい画面をいいます。

具体的なイメージとしては、以下の画像の緑枠で囲まれる小さい画面を意味します。

別名でダイアログと呼ばれたりします。

messageboxを使う目的

では、なぜmessageboxを使うのでしょう?

messageboxを使う目的として、

  • 操作不十分な場合に、利用者へエラーメッセージを伝えられる
  • 重要な操作を行う前に、確認をこめて利用者へ質問できる
  • 操作した結果を表示して、利用者を安心させる。

などがあります。

確かに操作した結果を、メッセージでいただけると安心しますね。

【8種類】messageboxの使い方

Tkinterで使われるmessageboxとしては、8種類存在します。

種類別に使い方を見ていきましょう。

showinfo

お知らせメッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : ok
8res = messagebox.showinfo("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてokが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのshowinfoを表示する。
5def getShowInfo():
6    # お知らせメッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # 戻り値 : ok
11    res = messagebox.showinfo("showinfo", "showinfoです。")
12    # レスポンスの内容を表示する。
13    print("showinfo", res)
14
15# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
16if __name__ == "__main__":
17    # Windowを生成する。
18    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
19    root = tk.Tk()
20    # Windowの非表示
21    root.withdraw()
22
23    getShowInfo()

以下の画像のようにmessageboxを表示します。

showwarning

警告メッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : ok
8res = messagebox.showwarning("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてokが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのshowwarningを表示する。
5def getShowWarning():
6    # 警告メッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # 戻り値 : ok
11    res = messagebox.showwarning("showwarning", "showwarningです。")
12    # レスポンスの内容を表示する。
13    print("showwarning", res)
14
15# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
16if __name__ == "__main__":
17    # Windowを生成する。
18    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
19    root = tk.Tk()
20    # Windowの非表示
21    root.withdraw()
22
23    getShowWarning()

以下の画像のようにmessageboxを表示します。

showerror

エラーメッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : ok
8res = messagebox.showerror("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてokが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのshowerrorを表示する。
5def getShowError():
6    # エラーメッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # 戻り値 : ok
11    res = messagebox.showerror("showerror", "showerrorです。")
12    # レスポンスの内容を表示する。
13    print("showerror", res)
14
15# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
16if __name__ == "__main__":
17    # Windowを生成する。
18    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
19    root = tk.Tk()
20    # Windowの非表示
21    root.withdraw()
22
23    getShowError()

以下の画像のようにmessageboxを表示します。

※ 筆者のMac OSでは、showinfoと同じアイコンが表示されました。

askquestion

Yes, Noの質問メッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : yes, no
8res = messagebox.askquestion("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてYesを選択した場合yes、Noを選択した場合noが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのaskquestionを表示する。
5def getAskQuestion():
6    # Yes, Noの質問メッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # 戻り値 : yes, no
11    res = messagebox.askquestion("askquestion", "askquestionです。")
12    # レスポンスの内容を表示する。
13    print("askquestion", res)
14
15# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
16if __name__ == "__main__":
17    # Windowを生成する。
18    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
19    root = tk.Tk()
20    # Windowの非表示
21    root.withdraw()
22
23    getAskQuestion()

以下の画像のようにmessageboxを表示します。

※ 筆者のMac OSでは、showinfoと同じアイコンが表示されました。

askokcancel

OK, Cancelの質問メッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : True, False
8res = messagebox.askokcancel("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてOKを選択した場合True、Cancelを選択した場合Falseが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのaskokcancelを表示する。
5def getAskOkCancel():
6    # OK, Cancelの質問メッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 戻り値 : True, False
10    res = messagebox.askokcancel("askokcancel", "askokcancelです。")
11    # レスポンスの内容を表示する。
12    print("askokcancel", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskOkCancel()

以下の画像のようにmessageboxを表示します。

※ 筆者のMac OSでは、showinfoと同じアイコンが表示されました。

askretrycancel

Retry, Cancelの質問メッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : True, False
8res = messagebox.askretrycancel("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてRetryを選択した場合True、Cancelを選択した場合Falseが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのaskretrycancelを表示する。
5def getAskRetryCancel():
6    # Retry, Cancelの質問メッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 戻り値 : True, False
10    res = messagebox.askretrycancel("askretrycancel", "askretrycancelです。")
11    # レスポンスの内容を表示する。
12    print("askretrycancel", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskRetryCancel()

以下の画像のようにmessageboxを表示します。

※ 筆者のMac OSでは、showwarningと同じアイコンが表示されました。

askyesno

Yes, Noの質問メッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : True, False
8res = messagebox.askyesno("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてYesを選択した場合True、Noを選択した場合Falseが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのaskyesnoを表示する。
5def getAskYesNo():
6    # Yes, Noの質問メッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 戻り値 : True, False
10    res = messagebox.askyesno("askyesno", "askyesnoです。")
11    # レスポンスの内容を表示する。
12    print("askyesno", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskYesNo()

以下の画像のようにmessageboxを表示します。

※ 筆者のMac OSでは、showinfoと同じアイコンが表示されました。

askyesnocancel

Yes, No, Cancelの質問メッセージを伝える場合に利用します。

1import tkinter as tk
2from tkinter import messagebox
3
4# 第一引数 : タイトル文字列
5# 第二引数 : メッセージ内容
6# 第三引数以降(任意) : option
7# 戻り値 : True, False, None
8res = messagebox.askyesnocancel("タイトル文字列", "メッセージ内容", option1, option2, ...)

で定義されます。戻り値としてYesを選択した場合True、Noを選択した場合False、Cancelを選択した場合Noneが返されます。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのaskyesnocancelを表示する。
5def getAskYesNoCancel():
6    # Yes, No, Cancelの質問メッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 戻り値 : True, False, None
10    res = messagebox.askyesnocancel("askyesnocancel", "askyesnocancelです。")
11    # レスポンスの内容を表示する。
12    print("askyesnocancel", res)
13
14# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
15if __name__ == "__main__":
16    # Windowを生成する。
17    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
18    root = tk.Tk()
19    # Windowの非表示
20    root.withdraw()
21
22    getAskYesNoCancel()

以下の画像のようにmessageboxを表示します。

※ 筆者のMac OSでは、showinfoと同じアイコンが表示されました。

Tkinterで使われるmessageboxのoption

Tkinterのmessageboxを使う場合に、第三引数以降へoptionを設定できます。

optionの種類としては、

  • detail
  • icon
  • type

の3種類が存在します。順に確認しましょう。

detail

detail optionを利用すると、メッセージを詳細に伝えることができます。8種類全てのmessageboxに対応可能です。

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのshowinfoを表示する。
5def getShowInfo():
6    # お知らせメッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # detail : メッセージ詳細
11    # 戻り値 : ok
12    res = messagebox.showinfo("showinfo", "showinfoです。", detail='hogehoge')
13    # レスポンスの内容を表示する。
14    print("showinfo", res)
15
16# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
17if __name__ == "__main__":
18    # Windowを生成する。
19    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
20    root = tk.Tk()
21    # Windowの非表示
22    root.withdraw()
23
24    getShowInfo()

以下の画像のように、詳細メッセージとしてhogehogeを追加して、messageboxを表示します。

icon

icon optionを利用すると、messagebox内に表示される、アイコンの設定を変更できます。8種類全てのmessageboxに対応可能です。

以下の表は、各messageboxの種類に対して、デフォルトで設定されるicon optionになります。

messageboxの種類名デフォルトのアイコンの種類デフォルトのicon optionの値
showinfo お知らせマークicon="info"
showwarning警告マークicon="warning"
showerrorエラーマークicon="error"
askquestion クエスチョンマークicon="question"
askokcancelクエスチョンマークicon="question"
askretrycancelクエスチョンマークicon="question"
askyesno クエスチョンマークicon="question"
askyesnocancelクエスチョンマークicon="question"

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのshowinfoを表示する。
5def getShowInfo():
6    # お知らせメッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # icon : icon情報を設定
11    # 戻り値 : ok
12    res = messagebox.showinfo("showinfo", "showinfoです。", icon='warning')
13    # レスポンスの内容を表示する。
14    print("showinfo", res)
15
16# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
17if __name__ == "__main__":
18    # Windowを生成する。
19    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
20    root = tk.Tk()
21    # Windowの非表示
22    root.withdraw()
23
24    getShowInfo()

以下の画像のように、デフォルトで設定されるicon=infoからicon=warningへ変更されて、messageboxを表示します。

type

type optionを利用すると、messagebox内の選択肢を変更できます。8種類全てのmessageboxに対応可能です。

以下の表は、type optionの種類をまとめたものです。

type optionの種類選択肢の種類messageboxの種類 x 各選択肢を選ぶ場合の戻り値
abortretryignore Abort, Retry, Ignore
okok
okcancelOK, Cancel
retrycancel Retry, Cancel
yesnoYes, No
yesnocancelYes, No, Cancel

例えば以下のようなコードを作成すると、

1import tkinter as tk
2from tkinter import messagebox
3
4# messageboxのshowinfoを表示する。
5def getShowInfo():
6    # お知らせメッセージを伝える、messageboxになります。
7    # 第一引数 : タイトル文字列
8    # 第二引数 : メッセージ内容
9    # 第三引数以降(任意) : option
10    # type : 選択肢の変更設定
11    # 戻り値 : abort, retry, ignore
12    res = messagebox.showinfo("showinfo", "showinfoです。", type='abortretryignore')
13    # レスポンスの内容を表示する。
14    print("showinfo", res)
15
16# Tkinter初学者参考 : https://docs.python.org/ja/3/library/tkinter.html#a-simple-hello-world-program
17if __name__ == "__main__":
18    # Windowを生成する。
19    # Windowについて : https://kuroro.blog/python/116yLvTkzH2AUJj8FHLx/
20    root = tk.Tk()
21    # Windowの非表示
22    root.withdraw()
23
24    getShowInfo()

以下の画像のように、messageboxを表示します。

まとめ

  • Tkinterで使われるmessageboxとは、メッセージを伝えるために、操作の途中で一時的に開かれる小さい画面を表す。
  • messageboxを利用すると、操作した結果を表示して、ユーザーを安心させる効果があります。

参考文献