1

I am a beginner in python but I would like to program a simple game using Python's "Button Panel" Demo code. I am not sure however on how to take that code out of the demo application and use it in my own application. Specifically, the following lines of code, I have no idea how to replace. I realize that the demo calls "parent" and I don't know what to say in place of "parent. (something)":

class SettingsPanel(wx.MiniFrame):

    def __init__(self, parent, id=wx.ID_ANY, title="Settings Panel", pos=wx.DefaultPosition,
             size=wx.DefaultSize,
             style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.FRAME_NO_TASKBAR
             | wx.FRAME_FLOAT_ON_PARENT | wx.CLIP_CHILDREN):

        wx.MiniFrame.__init__(self, parent, id, title, pos, size, style)

        self.targetTitleBar = parent.titleBar
        self.parent = parent
        self.panel = wx.Panel(self, -1)
    self.coloursizer_staticbox = wx.StaticBox(self.panel, -1, "Colour Options")
    self.bottomsizer_staticbox = wx.StaticBox(self.panel, -1, "Size Options")
    self.stylesizer_staticbox = wx.StaticBox(self.panel, -1, "ButtonPanel Styles")
    self.defaultstyle = wx.RadioButton(self.panel, -1, "Default Style", style=wx.RB_GROUP)
    self.gradientstyle = wx.RadioButton(self.panel, -1, "Gradient Style")
    self.verticalgradient = wx.RadioButton(self.panel, -1, "Vertical Gradient", style=wx.RB_GROUP)
    self.horizontalgradient = wx.RadioButton(self.panel, -1, "Horizontal Gradient")

    b = self.CreateColourBitmap(wx.BLACK)

    self.bakbrush = wx.BitmapButton(self.panel, ID_BackgroundColour, b, size=wx.Size(50,25))
    self.gradientfrom = wx.BitmapButton(self.panel, ID_GradientFrom, b, size=wx.Size(50,25))
    self.gradientto = wx.BitmapButton(self.panel, ID_GradientTo, b, size=wx.Size(50,25))
    self.bordercolour = wx.BitmapButton(self.panel, ID_BorderColour, b, size=wx.Size(50,25))
    self.captioncolour = wx.BitmapButton(self.panel, ID_CaptionColour, b, size=wx.Size(50,25))
    self.textbuttoncolour = wx.BitmapButton(self.panel, ID_ButtonTextColour, b, size=wx.Size(50,25))
    self.selectionbrush = wx.BitmapButton(self.panel, ID_SelectionBrush, b, size=wx.Size(50,25))
    self.selectionpen = wx.BitmapButton(self.panel, ID_SelectionPen, b, size=wx.Size(50,25))
    self.separatorcolour = wx.BitmapButton(self.panel, ID_SeparatorColour, b, size=wx.Size(50,25))

    self.separatorspin = wx.SpinCtrl(self.panel, -1, "7", min=3, max=20,
                                     style=wx.SP_ARROW_KEYS)
    self.marginspin = wx.SpinCtrl(self.panel, -1, "6", min=3, max=20,
                                  style=wx.SP_ARROW_KEYS)
    self.paddingspin = wx.SpinCtrl(self.panel, -1, "6", min=3, max=20,
                                   style=wx.SP_ARROW_KEYS)
    self.borderspin = wx.SpinCtrl(self.panel, -1, "3", min=3, max=7,
                                  style=wx.SP_ARROW_KEYS)

    self.__set_properties()
    self.__do_layout()

    self.Bind(wx.EVT_RADIOBUTTON, self.OnDefaultStyle, self.defaultstyle)
    self.Bind(wx.EVT_RADIOBUTTON, self.OnGradientStyle, self.gradientstyle)
    self.Bind(wx.EVT_RADIOBUTTON, self.OnVerticalGradient, self.verticalgradient)
    self.Bind(wx.EVT_RADIOBUTTON, self.OnHorizontalGradient, self.horizontalgradient)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_BackgroundColour)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_GradientFrom)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_GradientTo)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_BorderColour)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_CaptionColour)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_ButtonTextColour)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_SelectionBrush)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_SelectionPen)
    self.Bind(wx.EVT_BUTTON, self.OnSetColour, id=ID_SeparatorColour)

    self.Bind(wx.EVT_SPINCTRL, self.OnSeparator, self.separatorspin)
    self.Bind(wx.EVT_SPINCTRL, self.OnMargins, self.marginspin)
    self.Bind(wx.EVT_SPINCTRL, self.OnPadding, self.paddingspin)
    self.Bind(wx.EVT_SPINCTRL, self.OnBorder, self.borderspin)

    self.Bind(wx.EVT_CLOSE, self.OnClose)        


def __set_properties(self):

    self.defaultstyle.SetFont(wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
    self.defaultstyle.SetValue(1)
    self.gradientstyle.SetFont(wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
    self.verticalgradient.SetValue(1)

    if self.targetTitleBar.GetStyle() & bp.BP_DEFAULT_STYLE:
        self.verticalgradient.Enable(False)
        self.horizontalgradient.Enable(False)
        self.defaultstyle.SetValue(1)
    else:
        self.gradientstyle.SetValue(1)

    self.borderspin.SetValue(self.targetTitleBar.GetBPArt().GetMetric(bp.BP_BORDER_SIZE))
    self.separatorspin.SetValue(self.targetTitleBar.GetBPArt().GetMetric(bp.BP_SEPARATOR_SIZE))
    self.marginspin.SetValue(self.targetTitleBar.GetBPArt().GetMetric(bp.BP_MARGINS_SIZE).x)
    self.paddingspin.SetValue(self.targetTitleBar.GetBPArt().GetMetric(bp.BP_PADDING_SIZE).x)

    self.UpdateColours()        


def __do_layout(self):

    mainsizer = wx.BoxSizer(wx.VERTICAL)
    buttonsizer = wx.BoxSizer(wx.HORIZONTAL)
    bottomsizer = wx.StaticBoxSizer(self.bottomsizer_staticbox, wx.VERTICAL)
    sizer_13 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_12 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_11 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_10 = wx.BoxSizer(wx.HORIZONTAL)
    coloursizer = wx.StaticBoxSizer(self.coloursizer_staticbox, wx.HORIZONTAL)
    rightsizer = wx.BoxSizer(wx.VERTICAL)
    sizer_9 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_8 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_7 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_6 = wx.BoxSizer(wx.HORIZONTAL)
    leftsizer = wx.BoxSizer(wx.VERTICAL)
    sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_2 = wx.BoxSizer(wx.HORIZONTAL)
    sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
    stylesizer = wx.StaticBoxSizer(self.stylesizer_staticbox, wx.VERTICAL)
    tophsizer = wx.BoxSizer(wx.HORIZONTAL)
    tophsizer2 = wx.BoxSizer(wx.VERTICAL)

    stylesizer.Add(self.defaultstyle, 0, wx.ALL|wx.EXPAND|wx.ADJUST_MINSIZE, 5)

    tophsizer.Add(self.gradientstyle, 0, wx.LEFT|wx.RIGHT|wx.EXPAND|
                  wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)

    tophsizer2.Add(self.verticalgradient, 0, wx.BOTTOM|wx.ADJUST_MINSIZE, 3)
    tophsizer2.Add(self.horizontalgradient, 0, wx.ADJUST_MINSIZE, 0)

    tophsizer.Add(tophsizer2, 1, wx.LEFT|wx.EXPAND|wx.ALIGN_CENTER_VERTICAL, 10)

    stylesizer.Add(tophsizer, 1, wx.EXPAND, 0)

    mainsizer.Add(stylesizer, 0, wx.ALL|wx.EXPAND, 5)

    label_1 = wx.StaticText(self.panel, -1, "Background Brush Colour:")
    sizer_1.Add(label_1, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_1.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_1.Add(self.bakbrush, 0, wx.ADJUST_MINSIZE, 0)

    leftsizer.Add(sizer_1, 1, wx.EXPAND, 0)

    label_2 = wx.StaticText(self.panel, -1, "Gradient Colour From:")
    sizer_2.Add(label_2, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_2.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_2.Add(self.gradientfrom, 0, wx.ADJUST_MINSIZE, 0)

    leftsizer.Add(sizer_2, 1, wx.EXPAND, 0)

    label_3 = wx.StaticText(self.panel, -1, "Gradient Colour To:")
    sizer_3.Add(label_3, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_3.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_3.Add(self.gradientto, 0, wx.ADJUST_MINSIZE, 0)

    leftsizer.Add(sizer_3, 1, wx.EXPAND, 0)

    label_4 = wx.StaticText(self.panel, -1, "Border Colour:")
    sizer_4.Add(label_4, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_4.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_4.Add(self.bordercolour, 0, wx.ADJUST_MINSIZE, 0)

    leftsizer.Add(sizer_4, 1, wx.EXPAND, 0)

    label_5 = wx.StaticText(self.panel, -1, "Main Caption Colour:")
    sizer_5.Add(label_5, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_5.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_5.Add(self.captioncolour, 0, wx.ADJUST_MINSIZE, 0)

    leftsizer.Add(sizer_5, 1, wx.EXPAND, 0)

    coloursizer.Add(leftsizer, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)
    coloursizer.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)

    label_6 = wx.StaticText(self.panel, -1, "Text Button Colour:")
    sizer_6.Add(label_6, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_6.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_6.Add(self.textbuttoncolour, 0, wx.ADJUST_MINSIZE, 0)

    rightsizer.Add(sizer_6, 1, wx.EXPAND, 0)

    label_7 = wx.StaticText(self.panel, -1, "Selection Brush Colour:")
    sizer_7.Add(label_7, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_7.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_7.Add(self.selectionbrush, 0, wx.ADJUST_MINSIZE, 0)

    rightsizer.Add(sizer_7, 1, wx.EXPAND, 0)

    label_8 = wx.StaticText(self.panel, -1, "Selection Pen Colour:")
    sizer_8.Add(label_8, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_8.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_8.Add(self.selectionpen, 0, wx.ADJUST_MINSIZE, 0)

    rightsizer.Add(sizer_8, 1, wx.EXPAND, 0)

    label_9 = wx.StaticText(self.panel, -1, "Separator Colour:")
    sizer_9.Add(label_9, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_9.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_9.Add(self.separatorcolour, 0, wx.ADJUST_MINSIZE, 0)

    rightsizer.Add(sizer_9, 1, wx.EXPAND, 0)

    coloursizer.Add(rightsizer, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL, 5)

    mainsizer.Add(coloursizer, 0, wx.ALL|wx.EXPAND, 5)

    label_10 = wx.StaticText(self.panel, -1, "Separator Size:")
    sizer_10.Add(label_10, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_10.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_10.Add(self.separatorspin, 0, wx.ALL|wx.ADJUST_MINSIZE, 5)

    bottomsizer.Add(sizer_10, 1, wx.EXPAND, 0)

    label_11 = wx.StaticText(self.panel, -1, "Margins Size:")
    sizer_11.Add(label_11, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_11.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_11.Add(self.marginspin, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ADJUST_MINSIZE, 5)

    bottomsizer.Add(sizer_11, 1, wx.EXPAND, 0)

    label_12 = wx.StaticText(self.panel, -1, "Padding Size:")
    sizer_12.Add(label_12, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_12.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_12.Add(self.paddingspin, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ADJUST_MINSIZE, 5)

    bottomsizer.Add(sizer_12, 1, wx.EXPAND, 0)

    label_13 = wx.StaticText(self.panel, -1, "Border Size:")
    sizer_13.Add(label_13, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
    sizer_13.Add((0, 0), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
    sizer_13.Add(self.borderspin, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.ADJUST_MINSIZE, 5)

    bottomsizer.Add(sizer_13, 1, wx.EXPAND, 0)

    mainsizer.Add(bottomsizer, 0, wx.ALL|wx.EXPAND, 5)

    self.panel.SetSizer(mainsizer)
    sizer = wx.BoxSizer()
    sizer.Add(self.panel, 1, wx.EXPAND)
    self.SetSizer(sizer)
    self.Fit()


def CreateColourBitmap(self, c):

    image = wx.EmptyImage(25, 14)

    for x in xrange(25):
        for y in xrange(14):
            pixcol = c
            if x == 0 or x == 24 or y == 0 or y == 13:
                pixcol = wx.BLACK

            image.SetRGB(x, y, pixcol.Red(), pixcol.Green(), pixcol.Blue())

    return image.ConvertToBitmap()


def UpdateColours(self):

    bk = self.targetTitleBar.GetBPArt().GetColour(bp.BP_BACKGROUND_COLOUR)
    self.bakbrush.SetBitmapLabel(self.CreateColourBitmap(bk))

    capfrom = self.targetTitleBar.GetBPArt().GetColour(bp.BP_GRADIENT_COLOUR_FROM)
    self.gradientfrom.SetBitmapLabel(self.CreateColourBitmap(capfrom))

    capto = self.targetTitleBar.GetBPArt().GetColour(bp.BP_GRADIENT_COLOUR_TO)
    self.gradientto.SetBitmapLabel(self.CreateColourBitmap(capto))

    captxt = self.targetTitleBar.GetBPArt().GetColour(bp.BP_TEXT_COLOUR)
    self.captioncolour.SetBitmapLabel(self.CreateColourBitmap(captxt))

    bor = self.targetTitleBar.GetBPArt().GetColour(bp.BP_BORDER_COLOUR)
    self.bordercolour.SetBitmapLabel(self.CreateColourBitmap(bor))

    btntext = self.targetTitleBar.GetBPArt().GetColour(bp.BP_BUTTONTEXT_COLOUR)
    self.textbuttoncolour.SetBitmapLabel(self.CreateColourBitmap(btntext))

    selb = self.targetTitleBar.GetBPArt().GetColour(bp.BP_SELECTION_BRUSH_COLOUR)
    self.selectionbrush.SetBitmapLabel(self.CreateColourBitmap(selb))

    selp = self.targetTitleBar.GetBPArt().GetColour(bp.BP_SELECTION_PEN_COLOUR)
    self.selectionpen.SetBitmapLabel(self.CreateColourBitmap(selp))

    sepc = self.targetTitleBar.GetBPArt().GetColour(bp.BP_SEPARATOR_COLOUR)
    self.separatorcolour.SetBitmapLabel(self.CreateColourBitmap(sepc))


def OnDefaultStyle(self, event):

    self.verticalgradient.Enable(False)
    self.horizontalgradient.Enable(False)
    self.targetTitleBar.SetStyle(bp.BP_DEFAULT_STYLE)

    self.targetTitleBar.Refresh()

    event.Skip()


def OnGradientStyle(self, event): 

    self.verticalgradient.Enable(True)
    self.horizontalgradient.Enable(True)
    self.targetTitleBar.SetStyle(bp.BP_USE_GRADIENT)
    self.targetTitleBar.Refresh()

    event.Skip()


def OnVerticalGradient(self, event):

    self.targetTitleBar.GetBPArt().SetGradientType(bp.BP_GRADIENT_VERTICAL)
    self.targetTitleBar.SetStyle(bp.BP_USE_GRADIENT)
    self.targetTitleBar.Refresh()

    event.Skip()


def OnHorizontalGradient(self, event):

    self.targetTitleBar.GetBPArt().SetGradientType(bp.BP_GRADIENT_HORIZONTAL)
    self.targetTitleBar.SetStyle(bp.BP_USE_GRADIENT)
    self.targetTitleBar.Refresh()

    event.Skip()


def OnSetColour(self, event):

    dlg = wx.ColourDialog(self.parent)

    dlg.SetTitle("Colour Picker")

    if dlg.ShowModal() != wx.ID_OK:
        return

    var = 0
    if event.GetId() == ID_BackgroundColour:
        var = bp.BP_BACKGROUND_COLOUR
    elif event.GetId() == ID_GradientFrom:
        var = bp.BP_GRADIENT_COLOUR_FROM
    elif event.GetId() == ID_GradientTo:
        var = bp.BP_GRADIENT_COLOUR_TO
    elif event.GetId() == ID_BorderColour:
        var = bp.BP_BORDER_COLOUR
    elif event.GetId() == ID_CaptionColour:
        var = bp.BP_TEXT_COLOUR
    elif event.GetId() == ID_ButtonTextColour:
        var = bp.BP_BUTTONTEXT_COLOUR
    elif event.GetId() == ID_SelectionBrush:
        var = bp.BP_SELECTION_BRUSH_COLOUR
    elif event.GetId() == ID_SelectionPen:
        var = bp.BP_SELECTION_PEN_COLOUR
    elif event.GetId() == ID_SeparatorColour:
        var = bp.BP_SEPARATOR_COLOUR
    else:
        return        

    self.targetTitleBar.GetBPArt().SetColour(var, dlg.GetColourData().GetColour())
    self.targetTitleBar.Refresh()
    self.UpdateColours()

    self.parent.useredited = True


def OnSeparator(self, event):

    self.targetTitleBar.GetBPArt().SetMetric(bp.BP_SEPARATOR_SIZE,
                                             event.GetInt())

    self.targetTitleBar.DoLayout()
    self.parent.mainPanel.Layout()
    self.parent.useredited = True

    event.Skip()


def OnMargins(self, event):

    self.targetTitleBar.GetBPArt().SetMetric(bp.BP_MARGINS_SIZE,
                                             wx.Size(event.GetInt(), event.GetInt()))

    self.targetTitleBar.DoLayout()
    self.parent.mainPanel.Layout()

    self.parent.useredited = True

    event.Skip()


def OnPadding(self, event):

    self.targetTitleBar.GetBPArt().SetMetric(bp.BP_PADDING_SIZE,
                                             wx.Size(event.GetInt(), event.GetInt()))

    self.targetTitleBar.DoLayout()
    self.parent.mainPanel.Layout()
    self.parent.useredited = True

    event.Skip()


def OnBorder(self, event):

    self.targetTitleBar.GetBPArt().SetMetric(bp.BP_BORDER_SIZE,
                                             event.GetInt())

    self.targetTitleBar.DoLayout()
    self.parent.mainPanel.Layout()

    self.parent.useredited = True

    event.Skip()


def OnClose(self, event):

    self.parent.hassettingpanel = False
    self.Destroy()enter code here

For example, what would I put in place of "parent.titleBar"? And would I need to change anything else in the code to make it run independently?

user1246462
  • 1,228
  • 3
  • 11
  • 20
  • your question is quite ambigious..Could you spell out more clearly what you are trying to acheive? – cobie May 01 '12 at 20:11

2 Answers2

0

You usually have to tweak code from the demo so it can run outside of that framework. I wrote up a wiki page on this topic quite a while ago here.

The parent is most likely a wx.Frame. Almost all widgets require a parent. Personally, if I was going to write a game in Python, I'd use PyGame or Pyglet or something similar.

Mike Driscoll
  • 32,629
  • 8
  • 45
  • 88
0

There are usually a couple of changes required to move widgets from context of the demo to an application. Usually this involves creating an App (in the example below I used PySimpleApp), and removing logs. Below is a full example that works:

import wx 
class SettingsPanel(wx.MiniFrame):

    def __init__(self, parent, id=wx.ID_ANY, title="Settings Panel", pos=wx.DefaultPosition,
             size=wx.DefaultSize,
             style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.FRAME_NO_TASKBAR
             | wx.FRAME_FLOAT_ON_PARENT | wx.CLIP_CHILDREN):

        wx.MiniFrame.__init__(self, parent, id, title, pos, size, style)

        #self.targetTitleBar = parent.titleBar
        self.parent = parent
        self.panel = wx.Panel(self, -1)

app = wx.PySimpleApp() 
frame = SettingsPanel(None)
frame.Show()
app.MainLoop()

Frames don't need a parent, so here I just passed in None as the parent, and since None doesn't have a titleBar attribute, I commented out that line.

update: if you want to run this with titleBar, but don't want to use a real the real titleBar object, you can create a mock object. There are several mocking libraries to help you with this if you prefer, but since your titleBar only has a few methods, it may be easiest to just make a mock object yourself. You'd need to add all the methods that you call, but I've created a simple version with only the Refresh method. Also, since you now can't use parent=None, I've added a frame to be the parent of the mini-frame.

import wx 

class SettingsPanel(wx.MiniFrame):

    def __init__(self, parent, id=wx.ID_ANY, title="Settings Panel", pos=wx.DefaultPosition,
             size=wx.DefaultSize,
             style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.FRAME_NO_TASKBAR
             | wx.FRAME_FLOAT_ON_PARENT | wx.CLIP_CHILDREN):

        wx.MiniFrame.__init__(self, parent, id, title, pos, size, style)

        self.targetTitleBar = parent.titleBar
        self.parent = parent
        self.panel = wx.Panel(self, -1)

        self.targetTitleBar.Refresh() # an example of calling the mock object

class MockTitleBar(object):
    def __init__(self):
        pass
    def Refresh(self):
        print "refresh"

app = wx.PySimpleApp()
title_bar = MockTitleBar()
top_frame = wx.Frame(None)
top_frame.titleBar = title_bar
frame = SettingsPanel(top_frame)
top_frame.Show()
frame.Show()
app.MainLoop()
tom10
  • 67,082
  • 10
  • 127
  • 137
  • thanks for your reply. unfortunately, the rest of the code uses "self.targetTitleBar" so I have to include it in the code, I've updated my answer with more of the code so you can see where it is used. Is there another way to implement the title bar so that I don't have to comment it out? – user1246462 May 02 '12 at 20:03
  • I've updated my answer with a mock titleBar example. I'm not sure though whether this is what you want... do you want a real titlebar or a mock one. Obviously if you want a real one, then use a real one and not the mocked one. – tom10 May 02 '12 at 20:50