2016-09-14 1 views
0

Я хотел бы написать простой код с 2 панелями. несколько кнопок на левой боковой панели и соответствующую страницу на правой боковой панели, которая будет отображаться при нажатии кнопки. Каждая кнопка щелкнула панель изменений на соответствующую страницу с необходимыми полями ввода для дальнейшей обработки. Я не знаю, как я могу это достичь. Ниже приведен пример пользовательского интерфейса для справкиизменить несколько панелей на кнопку щелчок wxpython

http://imgur.com/a/xXP1l

я наткнулся ниже код, который логика выполнения моего требования в какой-то степени, но он открывает новую панель

import wx 
import wx.grid as gridlib 


class PanelOne(wx.Panel): 
"""""" 


def __init__(self, parent): 
    """Constructor""" 
    wx.Panel.__init__(self, parent=parent) 
    txt = wx.TextCtrl(self) 


class PanelTwo(wx.Panel): 
"""""" 

#---------------------------------------------------------------------- 
def __init__(self, parent): 
    """Constructor""" 
    wx.Panel.__init__(self, parent=parent) 

    grid = gridlib.Grid(self) 
    grid.CreateGrid(25,12) 

    sizer = wx.BoxSizer(wx.VERTICAL) 
    sizer.Add(grid, 0, wx.EXPAND) 
    self.SetSizer(sizer) 


class MyForm(wx.Frame): 

#---------------------------------------------------------------------- 
def __init__(self): 
    wx.Frame.__init__(self, None, wx.ID_ANY, 
         "Panel Switcher Tutorial") 

    self.panel_one = PanelOne(self) 
    self.panel_two = PanelTwo(self) 
    self.panel_two.Hide() 

    self.sizer = wx.BoxSizer(wx.VERTICAL) 
    self.sizer.Add(self.panel_one, 1, wx.EXPAND) 
    self.sizer.Add(self.panel_two, 1, wx.EXPAND) 
    self.SetSizer(self.sizer) 


    menubar = wx.MenuBar() 
    fileMenu = wx.Menu() 
    switch_panels_menu_item = fileMenu.Append(wx.ID_ANY, 
               "Switch Panels", 
               "Some text") 
    self.Bind(wx.EVT_MENU, self.onSwitchPanels, 
       switch_panels_menu_item) 
    menubar.Append(fileMenu, '&File') 
    self.SetMenuBar(menubar) 


    def onSwitchPanels(self, event): 
    """""" 
    if self.panel_one.IsShown(): 
     self.SetTitle("Panel Two Showing") 
     self.panel_one.Hide() 
     self.panel_two.Show() 
    else: 
     self.SetTitle("Panel One Showing") 
     self.panel_one.Show() 
     self.panel_two.Hide() 
    self.Layout() 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame =MyForm() 
    frame.Show() 
    app.MainLoop() 

ответ

0

Я настоятельно рекомендую проверить контроль wx.Listbook , Существует хороший пример в демо WxPython или вы могли бы также проверить этот tutorial

Существует также учебник по wxPython wiki