Как сделать .exe для Python с хорошей графикой? - PullRequest
3 голосов
/ 22 сентября 2010

У меня есть приложение на Python, и я решил сделать .exe для его запуска.

Это код, который я использую для .exe:

# -*- coding: cp1252 -*-
from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')


setup(
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "SoundLog.py"}],
    zipfile = None,
    packages=[r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Auxiliar", r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Plugins"],
)

Но когда я запускаю свое приложение с .exe, графика совсем другая.

На изображении ниже вы можете увидеть приложение, которое запускает мысли python слева и запускать мысли .exe справа. alt text

Как сделать так, чтобы .exe-файл был так же хорош, как и тот, на котором запущен мысли python?

Ответы [ 3 ]

7 голосов
/ 22 сентября 2010

Полагаю, вы имеете в виду визуальный стиль панели инструментов и кнопок.Вам необходимо добавить файл манифеста в EXE-файл или в виде отдельного файла, чтобы Windows применила современный стиль последних версий comctl32.dll.

Извлечение Использование визуальных стилей Windows XP с элементами управления в WindowsФормы на MSDN.Прочтите соответствующую часть о создании файла ".exe.manifest".

Более подробное руководство по py2exe можно найти на сайте wxPython .Они объясняют, как использовать setup.py для включения необходимого файла манифеста.

1 голос
/ 25 сентября 2010

Последняя настройка, которую я смонтировал, была такой:

# -*- coding: cp1252 -*-
from distutils.core import setup
import py2exe, sys, os
from glob import glob

sys.argv.append('py2exe')


manifest = """
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level='asInvoker' uiAccess='false' />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
     type='win32'
     name='Microsoft.VC90.CRT'
     version='9.0.21022.8'
     processorArchitecture='*'
     publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
         type="win32"
         name="Microsoft.Windows.Common-Controls"
         version="6.0.0.0"
         processorArchitecture="*"
         publicKeyToken="6595b64144ccf1df"
         language="*" />
    </dependentAssembly>
  </dependency>
</assembly>
"""

setup(
##    data_files = data_files,
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "SoundLog.py", 'other_resources': [(24,1,manifest)]}],
    zipfile = None,
    packages=[r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Auxiliar", r"C:\Users\Public\SoundLog\Code\Código Python\SoundLog\Plugins"],
)

Спасибо за быстрые ответы:)

0 голосов
/ 23 сентября 2010

Я обнаружил, что мне не нужен файл манифеста, когда я использовал Python 2.6 в Windows 7. Но он мне понадобился, когда я использовал Python 2.5 в XP и Vista.Если вы используете GUI2Exe, все, что вам нужно сделать, это установить небольшой флажок, чтобы включить его.

См. Следующие учебные пособия:

http://www.blog.pythonlibrary.org/2010/07/31/a-py2exe-tutorial-build-a-binary-series/

http://www.blog.pythonlibrary.org/2010/08/31/another-gui2exe-tutorial-build-a-binary-series/

Существует также манифест, связанный с Python для чего-либо 2.6+ благодаря переключателюв компиляторах на Windows (то есть VS2008 vs ye olde VS2003).Робин Данн, похоже, исправил последнюю сборку wxPython, поэтому вам не нужно включать это раздражение, но если вы НЕ используете wx, то вы, вероятно, столкнетесь с этой проблемой, когда попытаетесь создать двоичный файл.Сайт py2exe и wiki wxPython рассказывают о проблеме и о том, как создать манифест SxS.

...