ボタンを押すと特定のプログラムを実行し、実行している間プログレスバーを表示する(その2)

nobonboさんに教えていただいたことに従って、デモのProgressDialog.pyを改造した。それが以下のProgressDialog2.py。表示するメッセージを切り換える方法が理解できた。ありがとうございました。>nobonobo様

import  wx

class TestPanel(wx.Panel):
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        b = wx.Button(self, -1, "RUN", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)

    def OnButton(self, evt):
        max_count = 10000
        proceed = 0

        dlg = wx.ProgressDialog("Title",
                               "initial message",
                               maximum = max_count,
                               parent=self,
                               style = wx.PD_CAN_ABORT
                                | wx.PD_APP_MODAL
                                | wx.PD_ELAPSED_TIME
                                | wx.PD_REMAINING_TIME
                                )
        keepGoing = True

        while keepGoing:
            proceed += 1
            if proceed==max_count:
                msg = 'completed'
            else:
                msg = 'now running...'
            (keepGoing, skip) = dlg.Update(proceed, msg)
            
        dlg.Destroy()

def runTest(frame, nb, log):
    win = TestPanel(nb, log)
    return win

if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])


次に、春風はるかさんのコメントに従ってTextEntryDialog2.pyを改良した。
"wx.Gauge(self," としていたのを"wx.Gauge(panel, "に変更。そうしたら、画面表示が改善された!加えて背景色をピンクにした。
ありがとうございました。>春風はるか様

import  wx

class MyFrame(wx.Frame):
    """ based on Frame.py and Gauge.py """
    def __init__(
            self, parent, ID, title, pos=wx.DefaultPosition,
            size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE
            ):
        wx.Frame.__init__(self, parent, ID, title, pos, size, style)
        panel = wx.Panel(self, -1)
        panel.SetBackgroundColour('PINK')
        
        self.g1 = wx.Gauge(panel, -1, 50, (50, 50), (230, 25))
        self.Bind(wx.EVT_TIMER, self.TimerHandler)
        self.timer = wx.Timer(self)
        self.timer.Start(100)

    def TimerHandler(self, event):
        self.g1.Pulse()
   
class TestPanel(wx.Panel):
    """ based on Frame.py """
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        b = wx.Button(self, -1, "RUN", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)

    def OnButton(self, evt):
        win = MyFrame(self, -1, "Panel", size=(350, 200),
                      style = wx.DEFAULT_FRAME_STYLE)
        win.Show(True)

#-----------------------------------------------------------------
def runTest(frame, nb, log):
    win = TestPanel(nb, log)
    return win

#-----------------------------------------------------------------
if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])