メニューからスクリプトを実行する(その1)

ここしばらく、サブプロセスを実行するためのスクリプトを書く方に集中していたので、wxPythonから離れていた。しばらくは入り組んだ処理をスクリプトで自動的に行う作業をやらなくてはいけない。順番としてはその後で、GUIを作成することになる。でもwxPythonも忘れてしまうので、たまに使ってみる。

今回は、メニューから作成したスクリプトを実行するもの。
モジュールExecCmd1.py、ExecCmd2.pyの中でスクリプト処理を行い、サブプロセスを実行しているものとする。このとき、以下のコード(MenuExec.py)を作成した。

import wx
import ExecCmd1
import ExecCmd2

class MyApp(wx.PySimpleApp):
    def OnInit(self):
        self.Frm = wx.Frame(None, -1, "wxPython")
        
        menuBar = wx.MenuBar()

        menu1 = wx.Menu()
        menu1.Append(101, "&Do Program 1", "")
        menu1.Append(102, "&Do Program 2", "")
        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.ExecCmd2, id=102)
        self.Frm.Bind(wx.EVT_MENU, self.CloseWindow, id=103)

        self.Frm.Show()
        return True

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

    def ExecCmd1(self, event):
        ExecCmd1.ExecCmd1()

    def ExecCmd2(self, event):
        ExecCmd2.ExecCmd2()

app = MyApp()
app.MainLoop()

まあ、ここまでは簡単(?実際動かしてないけど問題ないはず)。
次にサブプロセスを実行したときのログファイルの内容を画面で表示するようにしたい。