【サンプルコード付】Tkinterで使われるmessageboxの活用法を解説
今回はTkinterで使われるmessageboxの活用法を、サンプルコードを用いて解説いたします。messageboxを使いたい、サンプルコードを通して学びを深めたい方へおすすめです。ぜひ最後までご一読ください。
執筆者 - おすすめの記事3選
そもそも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 | |
ok | ok | |
okcancel | OK, Cancel | |
retrycancel | Retry, Cancel | |
yesno | Yes, No | |
yesnocancel | Yes, 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を利用すると、操作した結果を表示して、ユーザーを安心させる効果があります。