Pythonでステータスバーにメッセージを表示する方法

Pythonでステータスバーにメッセージを表示する手法は、プログラムの進行状況やユーザーに対する短いフィードバックを提供するのに非常に便利です。この記事では、TkinterとPyQt5を使ったステータスバーへのメッセージ表示方法を詳しく解説します。さらに、2つの応用例を通して、このテクニックの多面性を示します。

目次

Tkinterを用いた基本的な例

TkinterはPythonの標準ライブラリに含まれるGUIツールキットです。

コード

from tkinter import Tk, Label, BOTTOM

def main():
    root = Tk()
    root.title("Tkinter Status Bar Example")
    
    # ステータスバーを作成
    status = Label(root, text="Processing...", bd=1, relief="sunken", anchor="w")
    status.pack(side=BOTTOM, fill="x")
    
    root.mainloop()

# スクリプトとして実行された場合のみmain()を呼び出す
if __name__ == "__main__":
    main()

コードの解説

このコードではTkinterを用いて、ステータスバーに”Processing…”と表示しています。
– `Tk()`: Tkinterウィンドウを生成
– `Label`: ラベルウィジェットを作成し、ステータスバーとして利用
– `pack(side=BOTTOM, fill=”x”)`: ステータスバーをウィンドウの下部に配置

PyQt5を用いた基本的な例

PyQt5は、QtライブラリをPythonで利用するためのラッパーです。

コード

from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar
import sys

def main():
    app = QApplication(sys.argv)
    window = QMainWindow()
    
    # ステータスバーを作成
    status = QStatusBar()
    status.showMessage("Processing...")
    window.setStatusBar(status)
    
    window.show()
    sys.exit(app.exec_())

# スクリプトとして実行された場合のみmain()を呼び出す
if __name__ == "__main__":
    main()

コードの解説

– `QApplication`: PyQt5アプリケーションオブジェクトを作成
– `QMainWindow`: 主要なウィンドウオブジェクトを作成
– `QStatusBar`: ステータスバーを作成して、”Processing…”と表示
– `setStatusBar()`: ウィンドウにステータスバーを設定

応用例1: Tkinterでのタイマー機能

こちらはステータスバーにタイマーを表示するTkinterを用いた例です。

コード

from tkinter import Tk, Label, BOTTOM
import time

def main():
    root = Tk()
    root.title("Tkinter Timer Example")
    
    # ステータスバーを作成
    status = Label(root, text="Time left: 10s", bd=1, relief="sunken", anchor="w")
    status.pack(side=BOTTOM, fill="x")
    
    # タイマー機能
    for i in range(10, 0, -1):
        status.config(text=f"Time left: {i}s")
        root.update()
        time.sleep(1)

    status.config(text="Time's up!")
    root.update()
    
    root.mainloop()
    
if __name__ == "__main__":
    main()

コードの解説

– `time.sleep(1)`: 1秒待機
– `root.update()`: ウィンドウを更新して、ステータスバーのテキストを即時に変更
– `status.config()`: ステータスバーのテキストを動的に更新

応用例2: PyQt5でのプログレスバー機能

こちらはステータスバーにプログレスバーを表示するPyQt5を用いた例です。

コード

from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QProgressBar
from PyQt5.QtCore import QTimer
import sys

def main():
    app = QApplication(sys.argv)
    window = QMainWindow()
    
    # ステータスバーを作成
    status = QStatusBar()
    window.setStatusBar(status)
    
    # プログレスバーを作成
    progress = QProgressBar()
    status.addWidget(progress)
    
    timer = QTimer()
    timer.timeout.connect(lambda: progress.setValue(progress.value() + 1))
    timer.start(1000)
    
    window.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

コードの解説

– `QProgressBar`: プログレスバーを作成
– `status.addWidget(progress)`: ステータスバーにプログレスバーを追加
– `QTimer()`: タイマーオブジェクトを作成して、一定時間ごとにプログレスバーを更新

まとめ

ステータスバーは、プログラムの進行状況や重要な通知を短く簡潔に表示するのに役立ちます。この記事では、TkinterとPyQt5でステータスバーにメッセージを表示する基本的な方法と、それぞれの応用例を紹介しました

。このテクニックを用いて、ユーザーエクスペリエンスを向上させてみてはいかがでしょうか。

コメント

コメントする

目次