ログファイルを選択してその内容を指定した位置に表示する(その3)

(その2)ではファイルの内容をうまく表示できていなかった。春風はるかさんのコメントに従って早速修正。MenuExec4.pyを次のようにした。

import wx
import os

wildcard = "Log files (*.log)|*.log|" \
           "All files (*.*)|*.*"

class MyApp(wx.PySimpleApp):
    def OnInit(self):
        self.Frm = wx.Frame(None, -1, "wxPython")
        
        menuBar = wx.MenuBar()
        menu1 = wx.Menu()
        menu1.Append(101, "&Show log", "")
        menu1.AppendSeparator()
        menu1.Append(103, "&Close", "Close this frame")
        menuBar.Append(menu1, "WORK")

        self.Frm.SetMenuBar(menuBar)

        self.Frm.Bind(wx.EVT_MENU, self.ExecCmd1, id=101)
        self.Frm.Bind(wx.EVT_MENU, self.CloseWindow, id=103)

        self.StTxt1 = wx.StaticText(self.Frm, -1, "Showing messages")
        self.TxtCtr2 = wx.TextCtrl(self.Frm, -1,
                              style=wx.TE_MULTILINE|wx.TE_LEFT)
        BxSz = wx.BoxSizer(wx.VERTICAL)
        BxSz.Add(self.StTxt1, 0, wx.FIXED_MINSIZE)
        BxSz.Add(self.TxtCtr2, 2, wx.EXPAND)
        self.Frm.SetSizer(BxSz)
        
        self.Frm.Show()
        return True
    
    def ShowMessage(self, msg1, msg2):
        self.StTxt1.SetLabel(msg1)
        self.TxtCtr2.AppendText(msg2)

    def CloseWindow(self, event):
        self.Frm.Close()

    def ExecCmd1(self, event):
#        print 'cwd: %s\n' % os.getcwd()
        dlg = wx.FileDialog(
            self.Frm, message="Choose a log file",
            defaultDir=os.getcwd(),
            defaultFile="",
            wildcard=wildcard,
            style=wx.OPEN|wx.MULTIPLE|wx.CHANGE_DIR)
        
        if dlg.ShowModal() == wx.ID_OK:
            file_name = dlg.GetFilename()
            f = open(file_name, "r")
            msg = f.read()
            f.close()
            self.ShowMessage("Here is a list", msg)
            
        dlg.Destroy()

app = MyApp()
app.MainLoop()

OnInitの方へコントロールの定義を戻したらうまくいきました!
ありがとうございました。>春風さん