Mit der Kommandozeilenoption ``--icon``, wie im Manual beschrieben.mathi hat geschrieben:Ich verwende den pyinstaller. Wie ist das einbetten möglich?
[gelöst] Frame-Icon Problem
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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 nichtLeonidas hat geschrieben: Mit der Kommandozeilenoption ``--icon``, wie im Manual beschrieben.
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.
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...?
Was ich aber nicht verstehe: wenn ich das Icon als Datei einbinde funktioniert es ja trotz der krummen Auflösung...?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo mathi!mathi hat geschrieben:Was ich aber nicht verstehe: wenn ich das Icon als Datei einbinde funktioniert es ja trotz der krummen Auflösung...?
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
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
ich hätte die Motivation, nur leider weiß ich nicht, wie ich die Stellen finde....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.
habe über die Suche nach Dateinamen "icon" nichts gefunden, also müßte die Funktion wx.Icon() wo anders stehen, nur wo???
Gruß Mathi
noch eine andere Frage:
img2py kann mit der Option -1 eine Funktion erstellen, um das Icon als wxIcon aufzurufen:
leider funktioniert dann aber ein nicht, die Fehlermeldung lautet ein IconStream erzeugt ????
edit: dieses Problem hat sich erledigt, mit, bringt aber auch nicht die erwünschte Wirkung
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)
warum das denn, ich dachte ich habe mitTypeError: in method 'TopLevelWindow_SetIcon', expected argument 2 of type 'wxIcon const &'
Code: Alles auswählen
geticonIcon = icon.GetIcon
edit: dieses Problem hat sich erledigt, mit
Code: Alles auswählen
geticonIcon = icon.GetIcon()
Zuletzt geändert von mathi am Montag 23. Februar 2009, 14:15, insgesamt 2-mal geändert.
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
MfG
HWK
Problem gelöst:
man nehme ein icon.ICO erstelle einen Stream mittels img2py -i icon.ico icon.py
und dann obiges
dann bekommt man das Icon auch für "krumme" Auflösungen
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