wx.Python: Icons & OSX

Plattformunabhängige GUIs mit wxWidgets.
Antworten
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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 ...
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
[code]#!/usr/bin/env python
import this[/code]
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

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.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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!
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

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 ;) )
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Antworten