Методом научного тыка не получилось, но мне нужно, чтобы панель с создаваемым рисунком была в одном окне, а элементы управления в другом. Я это делаю для того, чтобы пользователь мог устанавливать максимальный размер картинки, какой ему только позволит монитор, и чтоб при этом окно настроек не мешало. Для примера прилагаю код с одним единственным слайдером.
Может, кто-нибудь подскажет, как это сделать, чтоб слайдер был в одном окне, а полотно в другом окне?
#!/usr/bin/python



# cpu.py



import wx

import math

import wx.lib.wxcairo



class CPU(wx.Panel):

def __init__(self, parent, id):

wx.Panel.__init__(self, parent, id, size=(600, 600))

self.parent = parent

self.SetBackgroundColour('#FBFF05')

self.Bind(wx.EVT_PAINT, self.OnPaint)



def OnPaint(self, event):



dc = wx.PaintDC(self)

w,h = dc.GetSizeTuple()

cr = wx.lib.wxcairo.ContextFromDC(dc)



pos = self.parent.GetParent().GetParent().sel

rect = pos



cr.set_line_width (10)

cr.set_source_rgba(1, 0, 1, 1)

cr.move_to(20, 20)

cr.line_to(380, rect)



cr.stroke()





class CPUWidget(wx.Frame):

def __init__(self, parent, id, title):

wx.Frame.__init__(self, parent, id, title, size=(800, 600))



self.sel = 0



panel = wx.Panel(self, -1)

centerPanel = wx.Panel(panel, -1)



self.cpu = CPU(centerPanel, -1)



hbox = wx.BoxSizer(wx.HORIZONTAL)

self.slider = wx.Slider(panel, -1, self.sel, 0, 400, (20, 20), (25, 500),

wx.VERTICAL | wx.SL_LABELS | wx.SL_INVERSE)

self.slider.SetFocus()



hbox.Add(centerPanel, 0, wx.LEFT | wx.TOP, 20)

hbox.Add(self.slider, 0, wx.LEFT | wx.TOP, 23)





self.Bind(wx.EVT_SCROLL, self.OnScroll)



panel.SetSizer(hbox)



self.Centre()

self.Show(True)





def OnScroll(self, event):

self.sel = event.GetInt()

self.cpu.Refresh()





app = wx.App()

CPUWidget(None, -1, 'cpu')

app.MainLoop()