ログファイルを選択してその内容を指定した位置に表示する(その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()