ポップアップ画面を出してユーザーに確認や入力を促す、メッセージボックスの使い方をまとめました。
目次
メッセージのボックスの基本
①インポート
メッセージボックスは、「tkinter」から「messagebox」をインポートすることで使用可能になります。
from tkinter import messagebox
②メッセージボックスの種類
メッセージボックスは以下の8種類が準備されており、メッセージの表示のみ(show)が3種類、メッセージの表示+質問(ask)が5種類となっています。
- showinfo
- showwarning
- showerror
- askquestion
- askokcancel
- askyesno
- askyesnocancel
- askretrycancel
③タイトル・メッセージの設定
メッセージボックスにはタイトルとメッセージを設定することができます。
例
from tkinter import messagebox messagebox.showinfo("title", "message")
結果
④戻り値
メッセージボックスは、ユーザーが押したボタンによって異なる戻り値を出力します。
例
from tkinter import messagebox print(messagebox.showinfo("title", "message"))
結果
出力:ok
メッセージの表示(show)
①showinfo
戻り値: ok
②showwarning
戻り値: ok
③showerror
戻り値: ok
メッセージの表示 + 質問(ask)
①askquestion
戻り値: はい→yes
、いいえ→no
②askokcancel
戻り値: OK→True
、キャンセル→False
③askyesno
戻り値: はい→True
、いいえ→False
④askyesnocancel
戻り値: はい→True
、いいえ→False
、キャンセル→None
⑤askretrycancel
戻り値: 再試行→True
、キャンセル→False
動作確認用アプリ
メッセージボックスの外観確認用アプリを作成しました。
実行するとボタンが表示され、クリックすると対応するメッセージボックスを表示します。

コード全文
import tkinter from tkinter import messagebox class MessageBox(tkinter.Button): def __init__(self, title, master=None): super().__init__( master, width = 15, text=title, command=self.show_message ) self.title = title def show_message(self): if self.title == "showinfo": r = messagebox.showinfo(self.title, self.title) elif self.title == "showwarning": r = messagebox.showwarning(self.title, self.title) elif self.title == "showerror": r = messagebox.showerror(self.title, self.title) elif self.title == "askquestion": r = messagebox.askquestion(self.title, self.title) elif self.title == "askokcancel": r = messagebox.askokcancel(self.title, self.title) elif self.title == "askyesno": r = messagebox.askyesno(self.title, self.title) elif self.title == "askyesnocancel": r = messagebox.askyesnocancel(self.title, self.title) elif self.title == "askretrycancel": r = messagebox.askretrycancel(self.title, self.title) else: r = "" print(r) if __name__ == "__main__": message_list = [ "showinfo", "showwarning", "showerror", "askquestion", "askokcancel", "askyesno", "askyesnocancel", "askretrycancel" ] root = tkinter.Tk() for m in message_list: b = MessageBox(title=m, master=root) b.pack() root.mainloop()