py2exe und wxPython: Seltsamer Widget-Stil

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
achim
User
Beiträge: 10
Registriert: Dienstag 11. Juli 2006, 18:48

py2exe und wxPython: Seltsamer Widget-Stil

Beitragvon achim » Freitag 29. Juni 2007, 13:02

Hallo,

ich habe ein etwas seltsames Problem:

Ich habe ein wxPython-Programm geschrieben und mit py2exe ein Windows-Executable erzeugt, das auch funktioniert. Das Kuriose ist nur, dass die Widgets gar nicht den gleichen Stil haben, wie wenn ich das Programm direkt über Python ausführe.

Ich hoffe, ihr versteht, was ich meine...: Die Hintergrundfarbe ist anders, die Buttons sind eckiger, die Transparenz der Icons stimmt nicht mehr, usw.

Wenn ich das Programm dagegen direkt über Python ausführe, stimmt alles...

Kann es sein, dass ich das wx-Modul im setup.py explizit mit einbinden muss? Verstehen könnte ich das allerdings nicht, denn aus der Ausgabe von py2exe geht hervor, dass die wx-Dateien durchaus gefunden werden. Ausserdem würde der ganze Code doch dann gar nicht laufen?!

Hat jemand eine Idee, was ich da falsch gemacht haben könnte? Ich möchte die wxWidgets nämlich auch gerne im Windows-Executable haben...

gruss
achim

Hier der Quellcode meines setup.py:

Code: Alles auswählen

from distutils.core import setup
import py2exe

setup(name='Testapplikation',
      version='1.0',
      description='Testapplikation',
      author='Achim',
      author_email='achim@test.de',
      url='http://www.test.de',
      windows = [
        {
            "script": "main.py",
            "icon_resources": [(1, "main.ico")]
        }
    ],

     )
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: py2exe und wxPython: Seltsamer Widget-Stil

Beitragvon gerold » Freitag 29. Juni 2007, 13:08

achim hat geschrieben:Das Kuriose ist nur, dass die Widgets gar nicht den gleichen Stil haben, wie wenn ich das Programm direkt über Python ausführe.

Hallo achim!

Dieser http://www.python-forum.de/post-47305.html#47305 und die darauf folgenden Beiträge dürften das Geheimnis lüften. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
achim
User
Beiträge: 10
Registriert: Dienstag 11. Juli 2006, 18:48

Beitragvon achim » Freitag 29. Juni 2007, 13:38

Hallo Gerold,

Vielen Dank für den Link, ich konnte das Problem lösen...

Ich habe herausgefunden, dass man die Manifest-Datei mit py2exe auch in die EXE-Datei hineinkompilieren kann. Vielleicht ist das für den einen oder anderen ja interessant.

Gruss
achim

Hier der setup.py Code:

Code: Alles auswählen

from distutils.core import setup
import py2exe

manifest = """
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
    version="0.64.1.0"
    processorArchitecture="x86"
    name="Controls"
    type="win32"
/>
<description>myProgram</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>
"""

setup(name='Testapplikation',
   version='1.0',
   description='Testapplikation',
   author='Achim',
   author_email='achim@test.de',
   url='http://www.test.de',
   windows = [
   {
      "script": "main.py",
      "icon_resources": [(1, "main.ico")],
      "other_resources": [(24,1,manifest)]
   }
   ],
)

Wer ist online?

Mitglieder in diesem Forum: noisefloor