버튼을 누르면 특정 프로그램이 실행되는 Launcher 어플의 Template입니다.


# -*- coding: utf-8 -*-
#!/usr/bin/python

import wx
import subprocess

BUTTON_ID_1 = 101
BUTTON_ID_2 = 102
BUTTON_ID_3 = 103
BUTTON_ID_4 = 104

COMMAND_PATH_1 = "" # 첫번째 버튼으로 실행할 실행파일 경로 예) "C:\\Windows\\explorer.exe"
COMMAND_PATH_2 = "" # 두번째 버튼으로 실행할 실행파일 경로
COMMAND_PATH_3 = "" # 세번째 버튼으로 실행할 실행파일 경로
COMMAND_PATH_4 = "" # 네번째 버튼으로 실행할 실행파일 경로

COMMAND_PARAM_1 = "" # 첫번째 버튼으로 실행할 실행파일 파라미터
COMMAND_PARAM_2 = "" # 두번째 버튼으로 실행할 실행파일 파라미터
COMMAND_PARAM_3 = "" # 세번째 버튼으로 실행할 실행파일 파라미터
COMMAND_PARAM_4 = "" # 네번째 버튼으로 실행할 실행파일 파라미터

def ShellExecute(path, param="", cwd=None, nonExecutable = False):
    # path  : 실행 파일 경로
    # param : 파라미터
    # cwd   : 현재 디렉토리
    # nonExecutable : True일 경우, 실행 파일이 아니어도 연결 프로그램으로 실행 가능
    try:
        if param == "":
            subprocess.Popen([path], cwd = cwd, shell=nonExecutable)
        else:
            subprocess.Popen([path, param], cwd = cwd, shell=nonExecutable)
    except OSError:
        wx.MessageBox(u"Launch Failed!", u"Info")

class MainWindow(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size = (320, 240),
            style = wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
            
        vbox = wx.BoxSizer(wx.VERTICAL)

        button = wx.Button(self, id = BUTTON_ID_1, label = u"Button 1", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)
        
        button = wx.Button(self, id = BUTTON_ID_2, label = u"Button 2", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        button = wx.Button(self, id = BUTTON_ID_3, label = u"Button 3", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        button = wx.Button(self, id = BUTTON_ID_4, label = u"Button 4", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        self.SetSizer(vbox, True)
        self.Layout()
        
    def OnButton(self, event):
        buttonId = event.GetId()
        
        if buttonId == BUTTON_ID_1:
            ShellExecute(COMMAND_PATH_1, COMMAND_PARAM_1)
        if buttonId == BUTTON_ID_2:
            ShellExecute(COMMAND_PATH_2, COMMAND_PARAM_2)
        if buttonId == BUTTON_ID_3:
            ShellExecute(COMMAND_PATH_3, COMMAND_PARAM_3)
        if buttonId == BUTTON_ID_4:
            ShellExecute(COMMAND_PATH_4, COMMAND_PARAM_4)

            
app = wx.App(False)
frame = MainWindow(None, -1, u"Title")
frame.Show(1)
app.MainLoop()




<테스트 환경>
OS : Windows 7
Python 버전 : 2.7
wxPython 버전 : 2.8.12.1


,