ログファイルを選択して指定する位置に表示する(MenuExec2.py)

期待する動作: 想定しているコマンドの実行結果は標準でログファイルへ書き出される。なので、ログファイルの中身を確認できるようにする。メニューから"Show log"を選ぶとファイル選択画面が表示される。そこでログファイルを選択して開くと、ファイルの中身がパネル上の特定の位置に表示される。表示されたものはスクロールして確認することができる。

と、いうものを作ってみようと思った。なんか以前も同じようなことをやろうとしたような気がする。進歩がないが、少しずつ慣れていくしかあるまい。

今回は、ファイルダイアログボックスを開いてファイルを選択するところまで。
以下、コードMenuExec2.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)

        ScWin = wx.ScrolledWindow(self.Frm, -1)
        self.Frm.Show()
        return True

    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()
            print msg
            
        dlg.Destroy()

app = MyApp()
app.MainLoop()

ここまでで、選択したファイルの内容を取り込むことができた。後は、その内容を表示するようにしなければならない。