Seite 1 von 1

Hintergrundfarbe eines SplitterWindow

Verfasst: Dienstag 29. Januar 2008, 18:47
von Mawilo
Hallo,

wahrscheinlich habe ich nur einen "Tomaten-vor-den-Augen" Anfall. Ich bekomme die Hintergrundfarbe des unteren Fensters nicht hin. Die ist immer schwarz.

Das ganze soll im unteren Fenster mal ein Weg-Zeit-Diagramm werden. Kommt also noch ne ganze Menge dazu.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
wx.SetDefaultPyEncoding("iso-8859-15")

class MainFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, 'Weg-Zeit-Diagramm', size=(900, 700))
        self.spWindow = wx.SplitterWindow(self)
        self.top_w = wx.Panel(self.spWindow, -1, style=wx.SIMPLE_BORDER)
        self.bottom_w = wx.ScrolledWindow(self.spWindow, -1, style=wx.SIMPLE_BORDER)
        self.bottom_w.SetScrollbars(1, 1, 1000, 1200)
        self.bottom_w.SetBackgroundColour(wx.WHITE)
        self.spWindow.Initialize(self.top_w)
        self.spWindow.Initialize(self.bottom_w)
        self.spWindow.SetMinimumPaneSize(10)
        self.spWindow.SplitHorizontally(self.top_w, self.bottom_w, 120)

    def startGrafic(self):
        self.bottom_w.Bind(wx.EVT_PAINT, self.initGrafic)
        
    def initGrafic(self, event=None):
        dc = wx.BufferedPaintDC(self.bottom_w)
        TimeRoster(dc)
        
    def close(self, event=None):
        self.Destroy()
        
class TimeRoster:
    def __init__(self, dc, scalefactor=1):
        self.dc = dc
        self.setHorizontalLines()
        
    def setHorizontalLines(self):
        startLine_y = 200
        startLine_x = 50
        endLine_x = 800
        for idx in range(25):
            y = startLine_y + 50 * idx
            self.dc.DrawLine(startLine_x, y, endLine_x, y)

def main():
    app = wx.PySimpleApp()
    frame = MainFrame(None)
    frame.Show()
    frame.startGrafic()
    app.MainLoop()

if __name__ == '__main__':
    main()
Mawilo

Re: Hintergrundfarbe eines SplitterWindow

Verfasst: Dienstag 29. Januar 2008, 19:34
von gerold
Hallo Mawilo!

Du kannst/musst noch ein Panel in das ScrolledWindow legen. Dieses kannst du einfärben. Aber ich habe deinen Code jetzt nicht getestet.

mfg
Gerold
:-)

Verfasst: Mittwoch 30. Januar 2008, 18:06
von Mawilo
Hallo Gerold,

ich habe es mit einem Panel probiert, ging aber leider nicht. Ich musste statt wx.BufferedPaintDC nur wx.PaintDC verwenden - und schon geht es. :?
Hoffentlich habe ich dann später keine Nachteile, wenn die ganzen grafischen Elemente laufend neu gezeichnet werden sollen.
Laut dem Buch kann ich aber ein wx.ScrolledWindow statt eines Panels verwenden.
You can use a wx.ScrolledWindow any place that you would use a wx.Panel...
Es sollte also auch ohne zusätzliches Panel funktionieren.

Grüße
Mawilo