経緯
Pythonでプログラムを実行する前に、ユーザーにメッセージを表示したい場面がありました。
たとえば「処理を開始する前に、OKボタンを押してもらう」といったインターフェースを作りたくなり、調べてみたところ、Python標準ライブラリであるtkinter
にその機能があると分かりました。
tkinterのmessageboxを使う
tkinter
には、簡単にメッセージボックスを表示できるmessagebox
というモジュールが用意されています。
実際に使ってみたところ、わずか2行でメッセージボックスを表示できました。
以下がそのサンプルコードです。
from tkinter import messagebox
messagebox.showinfo("ループ開始", "OKを押すとループが開始します。")
このコードを実行すると、「ループ開始」というタイトルで、「OKを押すとループが開始します。」という本文を持つ情報表示用のメッセージボックスがポップアップ表示されます。
コードの解説
1行目では、tkinter
モジュールの中からmessagebox
だけをインポートしています。
2行目がメインの処理で、messagebox.showinfo()
を使ってメッセージボックスを表示しています。
この関数の第一引数がタイトル、第二引数が本文として表示されます。
たとえば今回の例では、タイトルが「ループ開始」、本文が「OKを押すとループが開始します。」です。
関数の書式は以下のとおりです。
messagebox.showinfo("タイトル", "本文")
showinfo()
以外にも、showwarning()
(警告)、showerror()
(エラー)など複数の種類が用意されています。
初期化を含めたより汎用的な書き方
環境によっては、tk.Tk()
によるウィンドウ初期化が必要になる場合があります。
その際には、以下のように記述します。
import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.withdraw()
messagebox.showinfo("タイトル", "本文")
このようにwithdraw()
を使ってメインウィンドウを非表示にすることで、メッセージボックスだけを表示することができます。
使用目的とまとめ
私の場合は、ループ処理を実行する前に「本当に開始してよいか?」とユーザーに確認する意味で、一度クリックを挟みたかったため、このようなメッセージボックスを採用しました。
処理をいきなり始めるのではなく、ワンクッション置くことでユーザーの操作性も向上します。
この方法はPythonの標準機能だけで実現できるため、外部ライブラリのインストールも不要で、非常に手軽です。
GUIを少しだけ加えたいときなどに役立つ機能ですので、ぜひ一度試してみてください。