Вместо класса, который настраивает вашу панель инструментов, используйте функцию. Функция может быть функцией-членом вашего Window, которая является подклассом wx.Frame. Таким образом, панель инструментов будет создана из правильного окна и прикреплена так, как вы ожидаете.
Класс, который вы пишете выше, работал бы, если бы знал, к какому wx.Frame (ваш класс называется Window) подключить панель инструментов. Чтобы заставить его работать, вы должны передать объект frame классу создателя панели инструментов ...
class Toolbar():
def __init__(self, frame_to_connect_to):
frame_to_connect_to.toolbar = frame_to_connect_to.CreateToolBar(style=(wx.TB_HORZ_LAYOUT | wx.TB_TEXT))
frame_to_connect_to.toolbar.SetToolBitmapSize((32,32))
frame_to_connect_to.toolbar.AddLabelTool(3, '', wx.Bitmap('GUI/icons/fileopen.png'))
frame_to_connect_to.toolbar.AddLabelTool(3, '', wx.Bitmap('GUI/icons/filesave.png'))
frame_to_connect_to.toolbar.AddSeparator()
frame_to_connect_to.toolbar.Realize()
Это похоже на быстрое исправление ... но на самом деле использование класса для этого не очень хорошее использование классов. (Я бы даже сказал, что это неправильно.)
На самом деле, что-то, что немного очистило бы, было бы просто переместить материал панели инструментов в его собственную функцию-член:
class Window(wx.Frame)
def __init__(self, parent, plot):
wx.Frame.__init__(self, parent, wx.ID_ANY, "Name", size =(900, 600))
self.Centre()
self._init_toolbar()
def _init_toolbar(self):
self.toolbar = self.CreateToolBar(style=(wx.TB_HORZ_LAYOUT | wx.TB_TEXT))
self.toolbar.SetToolBitmapSize((32,32))
self.toolbar.AddLabelTool(3, '', wx.Bitmap('GUI/icons/fileopen.png'))
self.toolbar.AddLabelTool(3, '', wx.Bitmap('GUI/icons/filesave.png'))
self.toolbar.AddSeparator()
self.toolbar.Realize()
Вы получаете все преимущества.