Я тут встретил в wxPython users group вопрос о том, как можно программно изменить открытую вкладку в wx.Notebook. Вот код, который у меня работает:
import random import wx ######################################################################## class TabPanel(wx.Panel): #---------------------------------------------------------------------- def __init__(self, parent, page): """page - это номер панели, НА которую надо будет переключиться при нажатии кнопки""" wx.Panel.__init__(self, parent=parent) self.page = page colors = ["red", "blue", "gray", "yellow", "green"] self.SetBackgroundColour(random.choice(colors)) btn = wx.Button(self, label="Change Selection") btn.Bind(wx.EVT_BUTTON, self.onChangeSelection) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(btn, 0, wx.ALL, 10) self.SetSizer(sizer) #---------------------------------------------------------------------- def onChangeSelection(self, event): """ Изменить вкладку! """ notebook = self.GetParent() notebook.SetSelection(self.page) ######################################################################## class DemoFrame(wx.Frame): """ Фрейм, содержащий остальные виджеты """ #---------------------------------------------------------------------- def __init__(self): """Constructor""" wx.Frame.__init__(self, None, wx.ID_ANY, "Notebook Tutorial", size=(600,400) ) panel = wx.Panel(self) notebook = wx.Notebook(panel) tabOne = TabPanel(notebook, 1) notebook.AddPage(tabOne, "Tab 1") tabTwo = TabPanel(notebook, 0) notebook.AddPage(tabTwo, "Tab 2") sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(notebook, 1, wx.ALL|wx.EXPAND, 5) panel.SetSizer(sizer) self.Layout() self.Show() #---------------------------------------------------------------------- if __name__ == "__main__": app = wx.App(False) frame = DemoFrame() app.MainLoop()
Как видите, главное, что Вам нужно знать - это методы SetSelection (или ChangeSelection) для изменения вкладки виджета Notebook. Этот код работает на Windows 7 с Python 2.7.3 и wxPython 2.9.3.1 (Classic). Смотрите так же дискуссию на Nabble.
Комментариев нет:
Отправить комментарий