From: <th...@us...> - 2004-01-16 10:45:45
|
Update of /cvsroot/py2exe/py2exe/py2exe/samples/advanced In directory sc8-pr-cvs1:/tmp/cvs-serv30646 Added Files: test_wx.py test_wmi.py setup.py icon.ico MyService.py .cvsignore Log Message: Move py2exe from the sandbox directory up to the root dir. --- NEW FILE: test_wx.py --- from wxPython.wx import * class MyFrame(wxFrame): def __init__(self, parent, ID, title, pos=wxDefaultPosition, size=(200, 200), style=wxDEFAULT_FRAME_STYLE): wxFrame.__init__(self, parent, ID, title, pos, size, style) panel = wxPanel(self, -1) button = wxButton(panel, 1003, "Close Me") button.SetPosition(wxPoint(15, 15)) EVT_BUTTON(self, 1003, self.OnCloseMe) EVT_CLOSE(self, self.OnCloseWindow) button = wxButton(panel, 1004, "Press Me") button.SetPosition(wxPoint(15, 45)) EVT_BUTTON(self, 1004, self.OnPressMe) def OnCloseMe(self, event): self.Close(True) def OnPressMe(self, event): # This raises an exception x = 1 / 0 def OnCloseWindow(self, event): self.Destroy() class MyApp(wxApp): def OnInit(self): frame = MyFrame(NULL, -1, "Hello from wxPython") frame.Show(true) self.SetTopWindow(frame) return true app = MyApp(0) app.MainLoop() --- NEW FILE: test_wmi.py --- import wmi # Tim Golden's wmi module. computer = wmi.WMI() for item in computer.Win32_Process()[:2]: print item --- NEW FILE: setup.py --- # A setup script showing advanced features. # # Note that for the NT service to build correctly, you need at least # win32all build 161, for the COM samples, you need build 163. # Requires wxPython, and Tim Golden's WMI module. from distutils.core import setup import py2exe import sys # If run without args, build executables, in quiet mode. if len(sys.argv) == 1: sys.argv.append("py2exe") sys.argv.append("-q") class Target: def __init__(self, **kw): self.__dict__.update(kw) # for the versioninfo resources self.version = "0.5.0" self.company_name = "No Company" self.copyright = "no copyright" self.name = "py2exe sample files" ################################################################ # A program using wxPython # The manifest will be inserted as resource into test_wx.exe. This # gives the controls the Windows XP appearance (if run on XP ;-) # # Another option would be to store it in a file named # test_wx.exe.manifest, and copy it with the data_files option into # the dist-dir. # manifest_template = ''' <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="5.0.0.0" processorArchitecture="x86" name="%(prog)s" type="win32" /> <description>%(prog)s Program</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly> ''' RT_MANIFEST = 24 test_wx = Target( # used for the versioninfo resource description = "A sample GUI app", # what to build script = "test_wx.py", other_resources = [(RT_MANIFEST, 1, manifest_template % dict(prog="test_wx"))], icon_resources = [(1, "icon.ico")], dest_base = "test_wx") test_wx_console = Target( # used for the versioninfo resource description = "A sample GUI app with console", # what to build script = "test_wx.py", other_resources = [(RT_MANIFEST, 1, manifest_template % dict(prog="test_wx"))], dest_base = "test_wx_console") ################################################################ # A program using early bound COM, needs the typelibs option below test_wmi = Target( description = "Early bound COM client example", script = "test_wmi.py", ) ################################################################ # a NT service, modules is required myservice = Target( # used for the versioninfo resource description = "A sample Windows NT service", # what to build. For a service, the module name (not the # filename) must be specified! modules = ["MyService"] ) ################################################################ # a COM server (exe and dll), modules is required # # If you only want a dll or an exe, comment out one of the create_xxx # lines below. interp = Target( description = "Python Interpreter as COM server module", # what to build. For COM servers, the module name (not the # filename) must be specified! modules = ["win32com.servers.interp"], ## create_exe = False, ## create_dll = False, ) ################################################################ # COM pulls in a lot of stuff which we don't want or need. excludes = ["pywin", "pywin.debugger", "pywin.debugger.dbgcon", "pywin.dialogs", "pywin.dialogs.list"] setup( options = {"py2exe": {"typelibs": # typelib for WMI [('{565783C6-CB41-11D1-8B02-00600806D9B6}', 0, 1, 2)], # create a compressed zip archive "compressed": 1, "optimize": 2, "excludes": excludes}}, # The lib directory contains everything except the executables and the python dll. # Can include a subdirectory name. zipfile = "lib/shared.zip", service = [myservice], com_server = [interp], console = [test_wx_console, test_wmi], windows = [test_wx], ) --- NEW FILE: icon.ico --- (This appears to be a binary file; contents omitted.) --- NEW FILE: MyService.py --- # # A sample service to be 'compiled' into an exe-file with py2exe. # # See also # setup.py - the distutils' setup script # setup.cfg - the distutils' config file for this # README.txt - detailed usage notes # # A minimal service, doing nothing else than # - write 'start' and 'stop' entries into the NT event log # - when started, waits to be stopped again. # import win32serviceutil import win32service import win32event import win32evtlogutil class MyService(win32serviceutil.ServiceFramework): _svc_name_ = "MyService" _svc_display_name_ = "My Service" _svc_deps_ = ["EventLog"] def __init__(self, args): win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): import servicemanager # Write a 'started' event to the event log... win32evtlogutil.ReportEvent(self._svc_name_, servicemanager.PYS_SERVICE_STARTED, 0, # category servicemanager.EVENTLOG_INFORMATION_TYPE, (self._svc_name_, '')) # wait for beeing stopped... win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) # and write a 'stopped' event to the event log. win32evtlogutil.ReportEvent(self._svc_name_, servicemanager.PYS_SERVICE_STOPPED, 0, # category servicemanager.EVENTLOG_INFORMATION_TYPE, (self._svc_name_, '')) if __name__ == '__main__': # Note that this code will not be run in the 'frozen' exe-file!!! win32serviceutil.HandleCommandLine(MyService) --- NEW FILE: .cvsignore --- build dist |