Seite 1 von 1
StatusBar Hintergrundfarbe ändern
Verfasst: Donnerstag 17. Januar 2008, 23:16
von stasikz
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)
Verfasst: Freitag 18. Januar 2008, 00:18
von HWK
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
Verfasst: Montag 17. März 2008, 22:00
von snakeseven
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
Verfasst: Dienstag 18. März 2008, 09:30
von Francesco
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.