初心者でもPythonを使ってみよう

趣味と実益を兼ねたPython学習記

【スポンサーリンク】



tkinter messageboxの使い方 Python

ポップアップ画面を出してユーザーに確認や入力を促す、メッセージボックスの使い方をまとめました。

目次

メッセージのボックスの基本

①インポート

メッセージボックスは、「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")

結果

f:id:vigilantPotato:20190418214806j:plain

④戻り値

メッセージボックスは、ユーザーが押したボタンによって異なる戻り値を出力します。

from tkinter import messagebox
print(messagebox.showinfo("title", "message"))

結果

出力:ok

メッセージの表示(show)

①showinfo

f:id:vigilantPotato:20190418215216j:plain

戻り値: ok

②showwarning

f:id:vigilantPotato:20190418215230j:plain

戻り値: ok

③showerror

f:id:vigilantPotato:20190418215256j:plain

戻り値: ok

メッセージの表示 + 質問(ask)

①askquestion

f:id:vigilantPotato:20190418215315j:plain

戻り値: はい→yes、いいえ→no

②askokcancel

f:id:vigilantPotato:20190418215335j:plain

戻り値: OK→True、キャンセル→False

③askyesno

f:id:vigilantPotato:20190418215359j:plain

戻り値: はい→True、いいえ→False

④askyesnocancel

f:id:vigilantPotato:20190418215418j:plain

戻り値: はい→True、いいえ→False、キャンセル→None

⑤askretrycancel

f:id:vigilantPotato:20190418215445j:plain

戻り値: 再試行→True、キャンセル→False

動作確認用アプリ

メッセージボックスの外観確認用アプリを作成しました。

実行するとボタンが表示され、クリックすると対応するメッセージボックスを表示します。

f:id:vigilantPotato:20190418222959j:plain

コード全文

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()