Спасибо за ваш совет.
Когда я читал ваш ответ о событиях treectrl - я подумал, что быстро попытаюсь заменить ReplaceWindow (oldpanel, newpanel), затем спрятать старое и затем показать новое.
Вот и все!В документации wxPython не удалось указать, что для правильного осуществления изменения необходимо скрыть и затем показать соответствующие старые и новые панели после вызова метода replacewindow.Это может быть из-за того, что родителями как старых, так и новых панелей является окно-сплиттер?
В любом случае, следующий код может помочь кому-то еще, кто может наткнуться на эту проблему / пост и показать концепцию того, что я пыталсядостижения.
Спасибо за вашу помощь!
Алекс
import wx
class MyApp(wx.App):
def __init__(self):
wx.App.__init__(self, redirect=False, filename='test')
self.f1 = wx.Frame(parent=None, id=-1, title='APP', pos = (100, 100), size=(1000, 700))
self.split = wx.SplitterWindow(self.f1)
self.leftPanel = wx.Panel(parent=self.split)
self.oldPanel = wx.Panel(parent=self.split)
self.newPanel = wx.Panel(parent=self.split)
self.oldLabel = wx.StaticText(parent=self.oldPanel, label='This is the old panel...', pos=(50, 50))
self.newLabel = wx.StaticText(parent=self.newPanel, label='This is now the new panel!', pos=(50, 50))
self.oldBut = wx.Button(parent = self.leftPanel,label='Show Old Panel', pos=(50, 50))
self.newBut = wx.Button(parent = self.leftPanel, label='Show New Panel', pos=(50, 75))
self.leftPanel.Bind(wx.EVT_BUTTON, self.showOld, self.oldBut)
self.leftPanel.Bind(wx.EVT_BUTTON, self.showNew, self.newBut)
self.split.SplitVertically(self.leftPanel, self.oldPanel)
self.split.SetMinimumPaneSize(100)
self.split.SetSashPosition(300)
self.f1.Show()
self.SetTopWindow(self.f1)
def showOld(self, event):
self.split.ReplaceWindow(self.split.GetWindow2(), self.oldPanel)
self.newPanel.Hide()
self.oldPanel.Show()
def showNew(self, event):
self.split.ReplaceWindow(self.split.GetWindow2(), self.newPanel)
self.oldPanel.Hide()
self.newPanel.Show()
if __name__ == '__main__':
app = MyApp()
app.MainLoop()