2016-06-20 4 views
0

다음 버튼을 누르면 패널을 전환하는 wx 2.8 (Python 2.7) 기본 GUI가 있습니다. GUI를 열면 최대화됩니다. 그러나 Windows 7/10에서 일부 이유는 전체 윈도우의 크기가 최소 크기로 조정되지만 우분투 14.04에서는 그렇지 않습니다. 누군가 내가 여기서 뭘 잘못하고 있는지 말해 줄 수 있습니까? 창 크기를 조정하고 싶지 않습니다. 최대화 상태로 유지하고 싶습니다. 전체 코드는 다음과 같습니다 :Windows에서 패널을 숨기거나 표시 할 때 wxPython 의도하지 않은 윈도우 크기 조절

#!/usr/bin/env python 

import wx 

class MainWindow(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Test") 

     self.SetMinSize((1000, 700)) 
     self.Maximize(True) 

     self.panel_one = Panel_One(self) 
     self.panel_two = Panel_Two(self) 
     self.panel_three = Panel_Three(self) 

     self.panel_two.Hide() 
     self.panel_three.Hide() 

     self.PanelSizer = wx.BoxSizer(wx.VERTICAL) 
     self.PanelSizer.Add(self.panel_one, 1, wx.CENTER|wx.EXPAND|wx.ALL) 
     self.PanelSizer.Add(self.panel_two, 1, wx.CENTER|wx.EXPAND|wx.ALL) 
     self.PanelSizer.Add(self.panel_three, 1, wx.CENTER|wx.EXPAND|wx.ALL) 
     self.SetSizer(self.PanelSizer) 

     self.Center() 

    def ShowPanelTwo(self, event): 
     self.panel_one.Hide() 
     self.panel_two.Show() 
     self.panel_two.TopSizer.Fit(self) 

    def ShowPanelThree(self, event): 
     self.panel_two.Hide() 
     self.panel_three.Show() 
     self.panel_three.TopSizer.Fit(self) 

class Panel_One(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.parent = parent 

     self.list = wx.ListCtrl(self, wx.ID_ANY, style = wx.LC_REPORT | wx.BORDER_SUNKEN) 
     self.list.InsertColumn(0, 'List 1') 
     self.nextbutton = wx.Button(self, wx.ID_ANY, label="Next", size=(80,-1)) 
     self.nextbutton.Bind(wx.EVT_BUTTON, self.parent.ShowPanelTwo) 
     self.VSizer = wx.BoxSizer(wx.VERTICAL) 
     self.HSizer = wx.BoxSizer(wx.HORIZONTAL) 
     self.TopSizer = wx.BoxSizer(wx.VERTICAL) 

     self.VSizer.Add(self.list, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.HSizer.Add(self.VSizer, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.TopSizer.Add(self.HSizer, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.TopSizer.Add(self.nextbutton, 0, wx.EXPAND, 5) 
     self.SetSizer(self.TopSizer) 

class Panel_Two(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.parent = parent 

     self.list = wx.ListCtrl(self, wx.ID_ANY, style = wx.LC_REPORT | wx.BORDER_SUNKEN) 
     self.list.InsertColumn(0, 'List 2') 
     self.nextbutton = wx.Button(self, wx.ID_ANY, label="Next", size=(80,-1)) 
     self.nextbutton.Bind(wx.EVT_BUTTON, self.parent.ShowPanelThree) 
     self.VSizer = wx.BoxSizer(wx.VERTICAL) 
     self.HSizer = wx.BoxSizer(wx.HORIZONTAL) 
     self.TopSizer = wx.BoxSizer(wx.VERTICAL) 

     self.VSizer.Add(self.list, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.HSizer.Add(self.VSizer, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.TopSizer.Add(self.HSizer, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.TopSizer.Add(self.nextbutton, 0, wx.EXPAND, 5) 
     self.SetSizer(self.TopSizer) 

class Panel_Three(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.parent = parent 

     self.list = wx.ListCtrl(self, wx.ID_ANY, style = wx.LC_REPORT | wx.BORDER_SUNKEN) 
     self.list.InsertColumn(0, 'List 3') 
     self.VSizer = wx.BoxSizer(wx.VERTICAL) 
     self.HSizer = wx.BoxSizer(wx.HORIZONTAL) 
     self.TopSizer = wx.BoxSizer(wx.VERTICAL) 

     self.VSizer.Add(self.list, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.HSizer.Add(self.VSizer, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.TopSizer.Add(self.HSizer, 1, wx.ALIGN_CENTER|wx.EXPAND, 5) 
     self.SetSizer(self.TopSizer) 

if __name__ == '__main__': 
    app = wx.App(False) 
    frame = MainWindow() 
    frame.Show() 
    app.MainLoop() 

답변

1

시도는 self.Layout()으로 self.whatever.TopSizer.Fit(self) 라인 교체. Fit의 크기를 변경하지 않으려는 경우, 크기 조절기의 레이아웃 알고리즘에 따라 패널의 내용을 배치하기 만하면됩니다.

+0

그것은 나를 위해 그것을했다! 고마워요. D –