SetIcon

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Sonntag 18. Juni 2006, 12:23

Hallo

Bei mir funktioniert das SetIcon unter Linux (Ubuntu) nicht.

Code: Alles auswählen

icon = wx.Icon('video.ico', wx.BITMAP_TYPE_ICO)
self.SetIcon(icon)
Unter Windows klappt das ganze wunderbar :].

Liegt es daran, das Unix keine Icons unterstüzt oder das mein Icon File mehrere Schichten hat.

Gruess
DM
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Sonntag 18. Juni 2006, 20:05

Hoi,

kann verschiedene Ursachen haben.

Was für ein Objekt ist denn hier "self"? Bist Du sicher, daß Dein Windows-Code und der Ubuntu-Code absolut identisch sind? Welche Fehlermeldung gibt es? Oder gibt es etwa gar keine Fehlermeldung? Magst Du uns etwas mehr Code bieten?

Bzgl. der Schichten: Kann auch sein - einfach einmal ausprobieren oder brauchst Du unbedingt die verschiedenen Schichten. Sonst einfach eine Kopie ohne Schichten anfertigen und schauen, ob Deine Ubuntu-Anwendung diese schluckt.

Gruß,
Christian
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Sonntag 18. Juni 2006, 20:08

Habe das ganze auch mit gif, icon, png und jpg versucht. ging nicht

wohl das einzige was irgend wie notwendig sein könnte...

Code: Alles auswählen

class Frame(wx.Frame):
    def __init__(self, parent=None, id=-1,title="None Title"):
        wx.Frame.__init__(self, parent, id, title)
        panel = wx.Panel(self)
        
        self.lblSource = wx.StaticText(panel, -1, "Quelldatei:")
        self.txtSource = wx.TextCtrl(panel, -1)
        self.cmdSource = wx.Button(panel, -1,"Browse")
        
        self.lblDestination = wx.StaticText(panel, -1, "Zieldatei:")
        self.txtDestination = wx.TextCtrl(panel, -1)
        self.cmdDestination = wx.Button(panel, -1, "Browse")
        
        self.lblGroesse = wx.StaticText(panel, -1, u"Grösse (Hoehe / Breite):")
        self.txtHeight = wx.TextCtrl(panel, -1)
        self.txtWidth = wx.TextCtrl(panel, -1)
        self.cmdGen = wx.Button(panel, -1, "Image verkleinern")
        
        self.Sizer = wx.FlexGridSizer(4, 3)
        self.Sizer.AddGrowableCol(0)
        self.Sizer.AddGrowableCol(1)
        self.Sizer.AddGrowableCol(2)
        self.Sizer.AddGrowableCol(3)
        
        #Source
        self.Sizer.Add(self.lblSource, 0, wx.ALL ^ wx.RIGHT, 10)
        self.Sizer.Add(self.txtSource, 0, wx.EXPAND | wx.ALL ^ wx.RIGHT, 10)
        self.Sizer.Add(self.cmdSource, 0, wx.ALL, 10)
        
        #Destination
        self.Sizer.Add(self.lblDestination, 0, wx.LEFT | wx.BOTTOM, 10)
        self.Sizer.Add(self.txtDestination, 0, wx.EXPAND | wx.LEFT | wx.BOTTOM, 10)
        self.Sizer.Add(self.cmdDestination, 0, wx.ALL ^wx.TOP , 10)
        
        #Size
        self.Sizer.Add(self.lblGroesse, 0, wx.LEFT |wx.BOTTOM, 10)
        self.Sizer.Add(self.txtHeight, 0, wx.LEFT | wx.BOTTOM | wx.EXPAND, 10)
        self.Sizer.Add(self.txtWidth, 0, wx.ALL ^ wx.TOP | wx.EXPAND,10)
        
        #Button
        self.Sizer.Add((10,10))
        self.Sizer.Add(self.cmdGen, 0 , wx.ALL ^ wx.TOP, 10)
        
        self.Bind(wx.EVT_BUTTON, self.OnBrowseSource, self.cmdSource)
        self.Bind(wx.EVT_BUTTON, self.OnBrowseDestination, self.cmdDestination)
        self.Bind(wx.EVT_BUTTON, self.Generate, self.cmdGen)
        
        icon = wx.Icon('video.ico', wx.BITMAP_TYPE_ICO)
        self.SetIcon(icon)
        
        panel.SetSizer(self.Sizer)
        self.Sizer.Fit(self)
        self.Sizer.SetSizeHints(self)
        
    def OnBrowseSource(self, event):
        msg = wx.FileDialog(self, "Source-Datei", style=wx.OPEN)
        msg.ShowModal()
        file = msg.GetPath()
        msg.Destroy()
        self.txtSource.SetValue(file)
    
    def OnBrowseDestination(self,event):
        msg = wx.FileDialog(self, "Ziel-Datei", style=wx.SAVE)
        msg.ShowModal()
        file = msg.GetPath()
        msg.Destroy()
        self.txtDestination.SetValue(file)
        
    def Generate(self, event):
        height = self.txtHeight.GetValue()
        width = self.txtWidth.GetValue()
        source = self.txtSource.GetValue()
        destination = self.txtDestination.GetValue()
        if height.isalnum() or width.isalnum() and not isEmpty(source) and not isEmpty(destination):
            if isEmpty(height) or height.isalpha == True:
                height = 0
            elif isEmpty(width) or width.isalpha == True:
                width = 0
            resize(source, destination, float(height), float(width), self)
        else:
            PrintError(self, u"Höhe / Breite ist leer oder nicht numerisch.\nOder es wurde keine Quelle oder kein Ziel angegeben")
Der Code muss gleich sein, einfach übers Netzwerk kopiert ;)
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Dienstag 20. Juni 2006, 17:52

Hab herausgefunden was der Fehler war :)
Hatte aus faulheit in der Shell einfach python "Pfadzumpyfile" eingegeben. Den Pfad zum File, habe ich sogar nur reinkpiert :s Und da der Standardpfad das Homeverzeichnis ist, und dort das icon nicht liegt, ist jetzt ja alles klar ;)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mittwoch 21. Juni 2006, 18:08

DatenMetzgerX hat geschrieben: Der Code muss gleich sein, einfach übers Netzwerk kopiert ;)
:-) Also doch solch eine Art Fehler. Ich hatte schon recherhiert und wollte raten / spekulieren woran es wohl liegen könnte. Nur mein Streß hat mich davon abgehalten - na, so hat das wenigstens etwas Gutes ...

Gruß,
Christian
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Mittwoch 21. Juni 2006, 18:11

CM hat geschrieben:
DatenMetzgerX hat geschrieben: Der Code muss gleich sein, einfach übers Netzwerk kopiert ;)
:-) Also doch solch eine Art Fehler. Ich hatte schon recherhiert und wollte raten / spekulieren woran es wohl liegen könnte. Nur mein Streß hat mich davon abgehalten - na, so hat das wenigstens etwas Gutes ...

Gruß,
Christian
Wieso fehler, tippe das ganze doch nicht ab ;)

OK linefeed ist nicht gleich, aber gedit hatte es richtig angezeigt ;)
Antworten