StatusBar Hintergrundfarbe ändern

Plattformunabhängige GUIs mit wxWidgets.
Benutzeravatar
stasikz
User
Beiträge: 18
Registriert: Donnerstag 5. Juli 2007, 21:34

StatusBar Hintergrundfarbe ändern

Beitragvon stasikz » Donnerstag 17. Januar 2008, 23:16

Hallo Leute!

hab versucht die Hintergrundfarbe von StatusBar in meinem Programm zu ändern, doch das geht nicht :(
Hab das so gemacht:

Code: Alles auswählen

self.statusbar.SetBackgroundColour('RED')
self.statusbar.Refresh()

hab dann so versucht:

Code: Alles auswählen

self.statusbar.SetBackgroundColour('RED')
self.statusbar.ClearBackground()

es geht zwar, doch dann wird der Text in der Statusbar nicht mehr sichtbar

kann es sein, dass das nur unter Linux geht?

Beispiel: hier (dort auf "Error handling without dialogs" klicken)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Freitag 18. Januar 2008, 00:18

SetStatusText scheint nicht auf die Hintergrundfarbe zu reagieren. Wenn Du stattdessen einen StaticText verwendest, funktioniert es (Windows XP):

Code: Alles auswählen

import  wx

class CustomStatusBar(wx.StatusBar):
    def __init__(self, parent):
        wx.StatusBar.__init__(self, parent, -1)
        self.SetFieldsCount(3)
        self.SetStatusWidths([-2, -1, -2])
        cb = wx.StaticText(self, -1, 'Eins')
        self.Reposition(cb, 0)
        cb = wx.StaticText(self, -1, 'Zwei')
        self.Reposition(cb, 1)
        cb = wx.StaticText(self, -1, 'Drei')
        self.Reposition(cb, 2)
        self.SetBackgroundColour('RED')

    def Reposition(self, cb, field):
        rect = self.GetFieldRect(field)
        cb.SetPosition((rect.x, rect.y))
        cb.SetSize((rect.width, rect.height))
 
class TestCustomStatusBar(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, 'Test Custom StatusBar')
        self.sb = CustomStatusBar(self)
        self.SetStatusBar(self.sb)
        tc = wx.TextCtrl(self, -1, "", style=wx.TE_READONLY|wx.TE_MULTILINE)
        self.SetSize((640, 480))
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)

    def OnCloseWindow(self, event):
        self.Destroy()

if __name__ == '__main__':
    app = wx.PySimpleApp()
    win = TestCustomStatusBar(None)
    win.Show()
    app.MainLoop()
MfG
HWK
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Montag 17. März 2008, 22:00

Hi,
schick, die bunte Statusbar, kann ich gut gebrauchen! Hab ein bischen was dazu gebastelt, um den Text zur Laufzeit bequem ändern zu können.

Code: Alles auswählen

import  wx

class CustomStatusBar(wx.StatusBar):
    def __init__(self, parent):
        wx.StatusBar.__init__(self, parent, -1)
        self.SetFieldsCount(4)
        self.SetStatusWidths([-2, -2, -2,-2])
        self.SetBackgroundColour(wx.Colour(255,215,50))
   
    def status_text(self, txt, field):
        self.Reposition(wx.StaticText(self, -1, txt), field)

    def Reposition(self, cb, field):
        rect = self.GetFieldRect(field)
        cb.SetPosition((rect.x, rect.y))
        cb.SetSize((rect.width, rect.height))
 
 
class TestCustomStatusBar(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, 'Test Custom StatusBar')
        self.sb = CustomStatusBar(self)
        self.SetStatusBar(self.sb)
        self.SetSize((640, 480))
        tc = wx.TextCtrl(self, -1, "", style=wx.TE_READONLY|wx.TE_MULTILINE)
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)

    def OnCloseWindow(self, event):
        self.Destroy()


if __name__ == '__main__':
    app = wx.PySimpleApp()
    win = TestCustomStatusBar(None)
    win.Show()     
    #--------------- Statusbartext aendern --------------
    win.sb.status_text(' och',0)                     
    win.sb.status_text(' nee!',1)                   
    win.sb.status_text(' der  schon',2)           
    win.sb.status_text(' wieder',3)
    win.sb.Update()
   
    app.MainLoop()


Gruß,
Seven
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Beitragvon Francesco » Dienstag 18. März 2008, 09:30

Ich erinnere mich, dass Andrea Gavana eine Customstatusbar geschrieben hat. Moment:
here it is: http://xoomer.alice.it/infinity77/main/freeware.html
EnhancedStatusbar. Mit dieser Klasse sollte es möglich sein.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder