Seite 1 von 1

wx.Python: Icons & OSX

Verfasst: Sonntag 29. August 2004, 20:08
von CM
Hi

so, nun habe ich mich auch mal angemeldet. Schließlich habt ihr mir schon so sehr geholfen und es ist auch nicht abzusehen, daß ich ganz ohne Hilfe auskommen werde, da kann ich ja auch mal mitspielen und vielleicht eines schönes Tages auch mal meinen Senf zu jemandes Problem geben.

Zunächst aber wieder eine Frage (kein wirklich großes Problem dieses Mal):
Angenommen ich möchte einem Nutzer mitteilen, daß ein Fehler aufgetreten ist und ich wähle dazu wx.MessageDialog, z.B.:

Code: Alles auswählen

mss = wx.MessageDialog(self,"Please do this or that to avoid the error","Error!",wx.OK|wx.ICON_ERROR)
Dann bekomme ich immer so etwas:

Bild

Mit anderen Worten: Es bleibt das Standardicon.

Mir ist nicht klar, ob das ein Problem mit meinem Python (Python 2.3.3), der wx Distribution oder OSX ist. Was kann man tun? Wie kann ich definieren welche Icons wo liegen? (Hat jemand Beispielcode?)

Ich habe in der Documentation geschaut, finde diese aber nicht besonders aufschlußreich in diesem Punkt. Vielleicht habe ich aber auch etwas übersehen und jemand weiß eine gute Lösung und die URL dazu?

Vielen Dank,
Christian

PS Irgendwie ist mein Screenshot etwas blaß, kann man aber hoffentlich trotzdem was mit anfangen ...

Verfasst: Sonntag 29. August 2004, 20:28
von Dookie
Hi CM,

was für ein Objekt ist self?

Bei mir klappt das so:

Code: Alles auswählen

msg = "Please do this or that to avoid the error"
mss = wx.MessageDialog(None, msg,"Error!", wx.OK|wx.ICON_ERROR)
mss.ShowModal()

Gruß

Dookie

Verfasst: Sonntag 29. August 2004, 20:29
von Christopy
Ich kenne mich leider nicht mit den Standardicons von OSX aus. Kann es sein, dass das angezeigte das Standard-Error Icon ist? Was passiert wenn Du Exclamatin oder Question Icons erzeugst? Ändert sich da was?
Afaik benutzt wxWidgets die Standardicons des Betriebssystems.

Verfasst: Sonntag 29. August 2004, 20:33
von mawe
Hi CM!

Ich hab mich mal über wxPython unter Mac schlau gemacht (Übertreibung :wink:). Hab das gefunden (Scroll mal ungefähr zur Mitte der Seite). Anscheinend fehlen ein paar Icons :?

UPDATE: Es fehlen keine. Christopy hat recht, es sind die Standardicons.

Gruß, mawe

Verfasst: Sonntag 29. August 2004, 21:00
von CM
Hoi

Ihr seid ja schnell! Unglaublich!

Tja, wieder was gelernt. Was mache ich denn da? Gut, es ist ja nur Kosmetik, aber weiß von euch jemand eine Möglichkeit, wie man "richtige" Icons irgendwo ablegt und dann verwenden kann. Also so, daß der MessageDialog-Code unverändert bleibt, man aber im Modul einen Verweis gibt, wo die ICON sind. Oder muß ich den Umweg über Bilder gehen, die nicht als Icon definiert sind, sprich z.B. kleine gifs oder bitmaps einbinden? (Was ja reichlich von hinten über die Brust ins Auge führen würde, oder?)

Zur Frage ob self oder None: None ergibt gar kein Icon bei mir. Hier müßte ich wohl den Message Dialog umdefinieren.

Vielen Dank,
Christian

PS Toller Link, mawe!

Verfasst: Sonntag 29. August 2004, 21:27
von mawe
Hi nochmal!

Das geht wirklich (man lernt nie aus :wink:).
Was Du glaub ich suchst ist wxArtProvider. Im wxPython Demo ist ein Beispiel dazu. Falls Du das nicht hast, schau hier.
Viel Glück :wink:

Gruß, mawe

Verfasst: Sonntag 29. August 2004, 21:49
von CM
Hoi mawe,

ja richtig, der ArtProvider! Ich werde es damit mal versuchen. Mir war nicht klar, daß dies eine Lösung sein könnte und habe schlicht nicht dran gedacht. Wird aber auch das erste Mal sein, daß ich damit rumwurtschtel. Hoffentlich klappt das.

Irgendwie beschleicht mich das Gefühl, daß dieses "einfache" Projekt, das ich mir für den Anfang ausgesucht habe immer komplexer wird ... :?

@all: Vielen Dank nochmals.

Schönen Start in die neue Woche,
Christian

Verfasst: Sonntag 29. August 2004, 21:49
von Christopy
Vom wxArtProvider kannst Du ein Standard-Icon bekommen, ja. Aber Du kannst es imho nicht als style im MessageDialog angeben. Die Methode setIcon() von wxDialog setzt vermutlich das Icon in der Titelleiste. Das einzige, was man machen kann ist sich einen eigenen Dialog zu stricken mit einem Icon als Widget.
(alles afaik ;) )

Verfasst: Sonntag 29. August 2004, 21:58
von mawe
Hi!
Christopy hat geschrieben: Das einzige, was man machen kann ist sich einen eigenen Dialog zu stricken mit einem Icon als Widget.
Das ist meiner Meinung nach auch die einfachste Lösung.

Gruß, mawe

Verfasst: Samstag 4. September 2004, 00:03
von CM
Hoi

finde ihr habt noch etwas Feedback verdient: Also in der Zwischenzeit bin ich umgezogen und da dauert alles etwas länger. Ich habe zwar an dem "Eigenbaumessagedialog" rumgebastelt, aber ohne befriedigendes Erlebnis.
Tja, werde es wohl beim Standard-Dialog belassen. Und das obwohl das Programm zwar auf manchem UNIX (inkl. OSX) System laufen mag, aber wohl kaum auf ´nem Windowsrechner.

Schade, aber trotzdem danke für eure Hilfestellung.

Gruß,
Christian