Seite 1 von 2

Verfasst: Montag 16. Februar 2009, 11:45
von Leonidas
mathi hat geschrieben:Ich verwende den pyinstaller. Wie ist das einbetten möglich?
Mit der Kommandozeilenoption ``--icon``, wie im Manual beschrieben.

Verfasst: Montag 16. Februar 2009, 12:23
von mathi
Leonidas hat geschrieben: Mit der Kommandozeilenoption ``--icon``, wie im Manual beschrieben.
Ich kenne die Option, damit habe ich der .exe ein Icon zugeordnet, dass man damit auch das Icon für den Frame nutzen kann war mir neu.... gleich mal ausprobiert und ...es funktioniert nicht

edit: die Option ist allein für das Einbinden eines Icons für die Datei, nicht aber für den Frame möglich. Das merkt man aber erst, wenn man die *.ico im Ordner löscht.

Verfasst: Montag 16. Februar 2009, 13:41
von mathi
Ich bin ja immernoch der Meinung es liegt am Auflösungsverhältnis....oder?

Verfasst: Mittwoch 18. Februar 2009, 13:13
von mathi
Also ich habe das Programm mal auf einem anderen Rechner mit 24" Monitor (aber Win XP) mit der gleichen Auflösung (16:9) laufen lassen, da hat es auch nicht funktioniert.... also liegt es definitiv an der Auflösung und nicht an Vista selbst !!!

Was ich aber nicht verstehe: wenn ich das Icon als Datei einbinde funktioniert es ja trotz der krummen Auflösung...?

Verfasst: Mittwoch 18. Februar 2009, 14:07
von gerold
mathi hat geschrieben:Was ich aber nicht verstehe: wenn ich das Icon als Datei einbinde funktioniert es ja trotz der krummen Auflösung...?
Hallo mathi!

Ein Icon (.ico) ist ein spezielles Dateiformat, welches mehrere Bilder in verschiedenen Größen enthalten kann. Ich kann mir vorstellen, dass beim Öffnen des Icons das passende Bild aus der Icon-Datei genommen wird. Ich kann mir auch vorstellen, dass das Bild beim Öffnen mit ``wx.Icon()`` irgendwie angepasst wird, damit es korrekt angezeigt werden kann. Was genau gemacht wird, ist sicherlich im Quellcode von wxPython ersichtlich. Aber mir fehlt die Motivation, diesen jetzt durchzusehen.

Diese Informationen oder Aufbereitungsschritte gehen natürlich verloren, wenn das Bild als "Image" oder "Bitmap" verarbeitet wird. Das Einfachste ist immer noch, eine Datei mit ``wx.Icon()`` zu öffnen und direkt zu verwenden. Dann muss man sich keine Gedanken mehr machen.

Nimm cx_freeze oder py2exe und liefere die zusätzlichen Dateien mit einem Setupprogramm aus. Das ist einfach und funktioniert (normalerweise). :-) --> http://www.python-forum.de/post-35092.html

mfg
Gerold
:-)

Verfasst: Montag 23. Februar 2009, 12:38
von mathi
gerold hat geschrieben:Ich kann mir auch vorstellen, dass das Bild beim Öffnen mit ``wx.Icon()`` irgendwie angepasst wird, damit es korrekt angezeigt werden kann. Was genau gemacht wird, ist sicherlich im Quellcode von wxPython ersichtlich. Aber mir fehlt die Motivation, diesen jetzt durchzusehen.
ich hätte die Motivation, nur leider weiß ich nicht, wie ich die Stellen finde....
habe über die Suche nach Dateinamen "icon" nichts gefunden, also müßte die Funktion wx.Icon() wo anders stehen, nur wo???

Gruß Mathi

Verfasst: Montag 23. Februar 2009, 14:00
von mathi
noch eine andere Frage:
img2py kann mit der Option -1 eine Funktion erstellen, um das Icon als wxIcon aufzurufen:

Code: Alles auswählen

from wx.lib.embeddedimage import PyEmbeddedImage

icon = PyEmbeddedImage(
    "iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAAEGUlE"
    "QVRIie1WS0srSxCu6emeR2I0JiSKaBa+FSQouAnE4MJf4EIQf4Nu/DWu/AsuxIXg+4EgKi6S"
    "nWJioiSZPCaJwzzSfRfNzQk65njlcs65cL/FMExX9Vf1dVX1APwnIAjCL3T7Nn4137+C7wTd"
    "2UcQhHaDnxr/eB8eHl5bW8vlcoIgEEIsy6KUfvRhjImiGIlEtra2np+fAWBpaWl2dlbTNMYY"
    "ACCECCG2bVNKRVHEGFuWBQCUUowxd8Tz8/Nzc3MrKyulUimTyUSjUcdxXMlkWdY0bXd3N5vN"
    "MsYWFhbi8XgwGOTBSZJ0fn4ejUYlSUomkwMDA4FAgC/Jsvz6+rq3t4ebzWYkEqnVaoQQVVV1"
    "Xbdt+7PMxsbGCoUCF+fl5WVgYCCfz1NKGWOKovT29jLGGo1GJBLRNA1j3Gw2GWOEkMHBQQBA"
    "AKAoCteQEIIQ6iC9JEmcmDGGEEII8e+CIHAZMcaMMUmSJEniq3xJFEUAwAihnZ2diYkJALi5"
    "uVldXQ2Hw65nLopiPp8fHR19eHgAgPHxcV3Xh4aGGGOU0re3t9PT03g8bhhGsVjEGCcSCUVR"
    "uP7VahUAMKV0eXlZ13VCSDAYnJ6eFkXxHRljjAfY3d1dLBb5x83NTVVVDcOglHK5jo+P/X6/"
    "YRhTU1PX19eTk5N8K+749vaGAcAwjEajIctyV1cXADSbTa4ML7P29xYTAFiWZdt2ywYAvF6v"
    "YRiGYWCMVVVtbdVy/CE6AGCM27N5x+RaNe90hr+7sH2rFjDXVFEUQkh74P+I9YvACKGTk5NA"
    "IEAIeXx8vLi46OnpeRdvJpPxeDwejwdjvLGxcXBw8E0yxtj09LSqqjx9RVF0XW+3IIRUKpX+"
    "/n7Lsnp6ejKZzPczo5T6fD7TNAGAUsqPvd2Ct4tpmqZpejyeDnvxzmu1oIsBxvju7s5xHF3X"
    "n56eeAO2wKdAKpXSNE3TtMPDw8+6HgDu7+8xxoIgFAqFcrnsklk6nXYc5+zsjAd1dHTUqleO"
    "crkci8XC4XC1Wp2cnHSdnBwzMzN8NRQK1et1F7LLy8vLy8sO4gDA9vZ2JBIBAMbYu1DawRhz"
    "HIcPFFezTzVph8/nE0Xxi3Xf4XpDnZc56vW6IAgfx9jXaThwIpFYX1/P5XKuiQuCUCqVGGOl"
    "UknXddM0CSGdd+xE1tfXhzFeXFy0LMs1NITQ/v7++Pi43++/vb3tUI0/1RlTSkdGRqrV6mdk"
    "siwPDQ3xHojFYh0KhLcNv9VcY8L82uSjCNwGICHE6/X6fD6MsSzL/ORck6jVapIkZbNZv9/v"
    "qjaybTuVSpmmyWdH+9O2bcdxTNOsVCrJZLJarV5dXYVCoY9MXBKEkKZpyWQynU4Hg0GX3Fsh"
    "fPZ39if+v/6emL7E+ifK9T9+O/4Ca6olvzq05dsAAAAASUVORK5CYII=")
geticonData = icon.GetData
geticonImage = icon.GetImage
geticonBitmap = icon.GetBitmap
geticonIcon = icon.GetIcon

leider funktioniert dann aber ein

Code: Alles auswählen

 self.SetIcon(geticonIcon)
nicht, die Fehlermeldung lautet
TypeError: in method 'TopLevelWindow_SetIcon', expected argument 2 of type 'wxIcon const &'
warum das denn, ich dachte ich habe mit

Code: Alles auswählen

geticonIcon = icon.GetIcon
ein IconStream erzeugt ????

edit: dieses Problem hat sich erledigt, mit

Code: Alles auswählen

geticonIcon = icon.GetIcon()
, bringt aber auch nicht die erwünschte Wirkung

Verfasst: Montag 23. Februar 2009, 14:11
von HWK
Der Quellcode steht in C++-Dateien. Die findest Du nur im Source-Code von wxPython, der ja nicht in den Binaries enthalten ist. Dort befinden sich aber mehrere Dateien mit Icon im Namen, z.B. "wxPython-src-2.8.9.2\src\generic\icon.cpp".
MfG
HWK

Verfasst: Montag 23. Februar 2009, 15:12
von mathi
Problem gelöst:

man nehme ein icon.ICO erstelle einen Stream mittels img2py -i icon.ico icon.py

und dann obiges

Code: Alles auswählen

geticonIcon = icon.GetIcon
dann bekommt man das Icon auch für "krumme" Auflösungen :-)