2017-02-21 126 views
-1

我通過銷燬面板1然後顯示面板2來更改我的面板。我不能使用創建兩者並隱藏en show的方法,因爲比我有其他問題。但重做我的佈局後,我的面板非常小。我怎樣才能使它和以前一樣大小?wxpython +更改面板和重做佈局面板後非常小

這是我testcode

import wx 

class Main(wx.Frame): 
def __init__(self, parent=None, id=-1, notify_channel="chanMicroanalysis", **kwargs): 

    # general panel information 
    wx.Frame.__init__(self, parent, wx.ID_ANY) 
    self.SetTitle('Microanalysis') 
    self.backpanel = wx.Panel(self, wx.ID_ANY) 

    # first panel 
    self.Choicepanel = wx.Panel(self.backpanel, wx.ID_ANY) 

    self.lblChoose = wx.StaticText(self.Choicepanel, label="Choose:") 
    self.btnChooseFilterOnly = wx.Button(self.Choicepanel, wx.ID_ANY, "Filter only ") 
    self.btnChooseMA = wx.Button(self.Choicepanel, wx.ID_ANY, "Microanalyse") 
    self.btnChooseCellInfo = wx.Button(self.Choicepanel, wx.ID_ANY, " CellInfo ") 
    self.btnChooseReport = wx.Button(self.Choicepanel, wx.ID_ANY, "Report") 

    # second panel: cellinfo 
    self.test1 =wx.Panel(self.backpanel, wx.ID_ANY) 
    self.Cellinfopanel = self.test1 

    self.lblChooseingo = wx.StaticText(self.Cellinfopanel, label="Choose:") 
    self.btnChooseFilter = wx.Button(self.Cellinfopanel, wx.ID_ANY, "Filter only ") 
    self.btnChooseprr = wx.Button(self.Cellinfopanel, wx.ID_ANY, "Microanalyse") 
    self.btnChooseCell = wx.Button(self.Cellinfopanel, wx.ID_ANY, " CellInfo ") 
    self.btnChoose = wx.Button(self.Cellinfopanel, wx.ID_ANY, "Report") 


    self._do_layout() 
    self._do_bindings() 

def _do_layout(self): 
    self.h_main_sizer = wx.BoxSizer() 
    self.h_centerbuttonsizer = wx.BoxSizer() 
    self.h_centerbutton1sizer = wx.BoxSizer() 
    self.v_firstsizer = wx.BoxSizer(wx.VERTICAL) 

    self.v_secondsizer = wx.BoxSizer(wx.VERTICAL) 
    self.v_thirdsizer = wx.BoxSizer(wx.VERTICAL) 
    self.v_fourthsizer = wx.BoxSizer(wx.VERTICAL) 
    self.v_buttonsizer = wx.BoxSizer(wx.VERTICAL) 
    self.v_button1sizer = wx.BoxSizer(wx.VERTICAL) 
    ########################################" 
    self.v_firstsizer.Add(self.Choicepanel, 1, wx.EXPAND) 
    self.v_buttonsizer.Add(self.lblChoose, 0, wx.CENTER) 
    self.v_buttonsizer.Add(self.btnChooseFilterOnly, 0, wx.EXPAND) 
    self.v_buttonsizer.Add(self.btnChooseMA, 0, wx.EXPAND) 
    self.v_buttonsizer.Add(self.btnChooseCellInfo, 0, wx.EXPAND) 
    self.v_buttonsizer.Add(self.btnChooseReport, 0, wx.EXPAND) 

    self.h_centerbuttonsizer.AddStretchSpacer(1) 
    self.h_centerbuttonsizer.Add(self.v_buttonsizer, 0, wx.CENTER) 
    self.h_centerbuttonsizer.AddStretchSpacer(1) 

    self.Choicepanel.SetSizer(self.h_centerbuttonsizer) 
    self.h_centerbuttonsizer.Fit(self.Choicepanel) 
     ########################################" 
    self.v_secondsizer.Add(self.Cellinfopanel, 5, wx.EXPAND) 
    self.v_button1sizer.Add(self.lblChooseingo, 0, wx.CENTER) 
    self.v_button1sizer.Add(self.btnChooseFilter, 0, wx.EXPAND) 
    self.v_button1sizer.Add(self.btnChooseprr, 0, wx.EXPAND) 
    self.v_button1sizer.Add(self.btnChooseCell, 0, wx.EXPAND) 
    self.v_button1sizer.Add(self.btnChoose, 0, wx.EXPAND) 

    self.h_centerbutton1sizer.AddStretchSpacer(1) 
    self.h_centerbutton1sizer.Add(self.v_button1sizer, 0, wx.CENTER) 
    self.h_centerbutton1sizer.AddStretchSpacer(1) 

    self.Cellinfopanel.SetSizer(self.h_centerbutton1sizer) 
    self.h_centerbutton1sizer.Fit(self.Choicepanel) 
    ########################################" 


    self.h_main_sizer.Add(self.v_firstsizer, 20, wx.EXPAND) 
    self.h_main_sizer.Add(self.v_secondsizer, 20, wx.EXPAND) 

    self.backpanel.SetSizer(self.h_main_sizer) 
    self.h_main_sizer.Fit(self) 
    # 
    # self.Choicepanel.Show() 
    # self.Cellinfopanel.Hide() 
    # self.MApanel.Hide() 
    # self.Reportpanel.Hide() 
    self.Choicepanel.Show() 
    self.Cellinfopanel.Show() 
    self.statusMAPanelShown = False 


def _do_bindings(self): 

    self.btnChooseprr.Bind(wx.EVT_BUTTON, self.on_chooseMA) 


def on_chooseMA(self, event): 
    print "in choose MA" 
    self.showMAPanel() 
    self._do_layout() 

    # 
    # self.Layout() 


def showMAPanel(self): 
    print "in showmapanel" 
    self.test1.Destroy() 
    self.test2 =wx.Panel(self.backpanel, wx.ID_ANY) 
    self.Cellinfopanel = self.test2 
    self.lblChooseingo = wx.StaticText(self.Cellinfopanel, label="test:") 
    self.btnChooseFilter = wx.Button(self.Cellinfopanel, wx.ID_ANY, "test1 ") 
    self.btnChooseprr = wx.Button(self.Cellinfopanel, wx.ID_ANY, "test2") 
    self.btnChooseCell = wx.Button(self.Cellinfopanel, wx.ID_ANY, " test3 ") 
    self.btnChoose = wx.Button(self.Cellinfopanel, wx.ID_ANY, "test4") 

if __name__ == '__main__': 
app = wx.PySimpleApp() 
MAview = Main(None, wx.ID_ANY) 
MAview.Maximize() 
MAview.Show() 
app.MainLoop() 

編輯:作爲建議這是不一樣的問題。在提出的問題中,我使用了隱藏和顯示方法,並且還存在調整大小的問題,但是面板很大。我實際上解決了另一個問題,我將添加答案。

+0

可能重複的[wxpython:覆蓋wx.panel與另一個wx.panel,但新的面板不會調整權利](http://stackoverflow.com/questions/42228800/wxpython-overlay-wx-panel-with-另外-wx-panel-but-new-panel-doesnt-resize-ri) – user2682863

+0

請不要垃圾郵件,如果你想重新編寫你的問題,請重新編寫原文帖子 – user2682863

+0

hello user2682863,這也是我的問題,但這是另一個問題,而不是同一個問題的重新說明。但要提出這個問題,因爲我忘了回答我自己的問題。 – VeVi

回答