Скрытие командной строки в приложении wxpython
Я написал приложение с графическим интерфейсом, используя wxpython и преобразовал его в исполняемый файл, используя py2exe. Однако всякий раз, когда я запускаю исполняемый файл, командная строка появляется в фоновом режиме и закрывается при выходе из программы. Есть ли способ не заставить его появиться?
1 ответ
Решение
Вы устанавливаете тип приложения на console
в настройке py2exe:
setup(console=...
пока нужно это сделать windows
:
setup(windows=...
Здесь у меня есть простое приложение wxpython в файле с именем example.pyw
:
# -*-coding: utf-8 -*-
#!python
# @file: example.pyw
import wx
class AppFrame(wx.Frame):
def __init__(self, title, *args, **kwargs):
super(AppFrame, self).__init__(None, title=title, *args, **kwargs)
self.panel = wx.Panel(self)
class AppMain(wx.App):
def OnInit(self):
self.frame = AppFrame("Example")
self.frame.Show()
return True
AppMain(True).MainLoop()
это простая настройка в файле с именем setup.py
:
# -*-coding: utf-8 -*-
#!python
# @file: setup.py
from distutils.core import setup
import py2exe
# http://msdn.microsoft.com/en-us/library/ms648009%28v=vs.85%29.aspx
RT_MANIFEST = 24
# http://en.wikipedia.org/wiki/Side-by-side_assembly
manifest = """
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.VC90.CRT"
version="9.0.21022.8"
processorArchitecture="*"
publicKeyToken="1fc8b3b9a1e18e3b"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
"""
setup(
windows = [{
"script" : "example.pyw",
# "icon_resources" : [(1, "icon.ico")] # have an icon?
"other_resources" : [(RT_MANIFEST, 1, manifest)]
}]
)
положить их в тот же каталог и cd
в этот каталог и запустить python setup.py py2exe
:
> python setup.py py2exe
running py2exe
creating C:\Users\XXX\build
creating C:\Users\XXX\build\bdist.win32
...
KERNEL32.dll - C:\Windows\system32\KERNEL32.dll
MSVCP90.dll - C:\Program Files\CMake 2.8\bin\MSVCP90.dll
RPCRT4.dll - C:\Windows\system32\RPCRT4.dll
>
если все прошло хорошо, у вас должна быть папка с именем dist
с example.exe
внутри. Запустите его, и оно должно показать окно без консоли.