今回ご紹介するのは、時間のかかる処理の進捗状況を表示する「プログレスダイアログ」です。
# -*- coding: utf-8 -*-
import wx
import time
# ボタンのクリックイベント
def click(event):
# プログレスダイアログ
dlg = wx.ProgressDialog(u'コピー中(大嘘)', u'0/50ファイル', 50)
dlg.ShowModal()
# ループ処理
for a in range(0, 50):
# 0.5秒待つ
time.sleep(0.5)
# 値の更新
dlg.Update(a, u'%d/50ファイル' % a)
dlg.Destroy()
app = wx.App()
frame = wx.Frame(None, wx.ID_ANY, u'タイトル', size=(200, 200))
frame.CreateStatusBar()
p = wx.Panel(frame, wx.ID_ANY)
button = wx.Button(p, wx.ID_ANY, u'開 始')
button.Bind(wx.EVT_BUTTON, click)
frame.Show()
app.MainLoop()
<結果>
続いて詳細を見ていきます。
= = 詳細 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
上記のスクリプトを実行すると、ボタンだけが配置されたシンプルなフレームが表示されます。
そのボタンをクリックすると、今回ご紹介するプログレスダイアログが表示されます。
dlg = wx.ProgressDialog(u'コピー中(大嘘)', u'0/50ファイル', 50)
この記述でプログレスダイアログをインスタンス化しています。
引数は(タイトル、メッセージ、最大値)を指定しています。
さらに、引数にスタイルを追加することで、経過時間・完了予定時間・残り時間を表示することができます。
dlg = wx.ProgressDialog(u'コピー中(大嘘)', u'0/50ファイル', 50, style=wx.PD_ELAPSED_TIME | wx.PD_ESTIMATED_TIME | wx.PD_REMAINING_TIME)
但し、表示は英語のみなのでご注意ください。dlg.Update(a, u'%d/50ファイル' % a)
Update関数でプログレスバーの値を進めます。このとき、第1引数でプログレスバーの値を指定し、第2引数でメッセージを指定します。
第2引数は省略することができ、省略した場合、メッセージは変化しません。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
プログレスダイアログは使い方がシンプルで、気軽に使うことができます。
多くのファイルに処理を行う場合、プログレスダイアログがあれば視覚的・直観的に進捗状況を把握できるので非常に便利です。
0 件のコメント:
コメントを投稿