wxPythonでプログレスバーダイアログを表示してみる

2011/10/07

wx.ProgressDialogを使って、プログレスバーを表示してみる。ボタンをクリックすると、プログレスバーが表示され、15秒カウントすると、ダイアログが閉じる。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx

class MyProgressDialog(wx.ProgressDialog):
    progressMax = 15
    def __init__(self):
        wx.ProgressDialog.__init__(self, "A progress box",
            "Time remaining", self.progressMax,
            style=wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME | wx.PD_AUTO_HIDE)
    def Show(self):
        keepGoing = True
        count = 0
        while keepGoing and count < self.progressMax:
            count = count + 1
            wx.Sleep(1)
            keepGoing = self.Update(count)

class MyWindow(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"MyTitle",size=(300,200))
        panel=wx.Panel(self)
        button=wx.Button(panel,label="exit",pos=(130,10),size=(60,60))
        button2=wx.Button(panel,label="dialog",pos=(130,70),size=(60,60))
        self.Bind(wx.EVT_BUTTON, self.closebutton, button)
        self.Bind(wx.EVT_BUTTON, self.dialogbutton, button2)
 
    def closebutton(self,event):
        self.Close(True)
 
    def dialogbutton(self,event):
        dialog = MyProgressDialog()
        dialog.Show()
        dialog.Destroy()

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=MyWindow(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

プログラムを実行するとメインウインドウが表示される。

dialogボタンをクリックするとプログレスバーダイアログが表示される。

参考にしたリンク

wxPython

Posted by skw