2016-06-20 18 views
0

次のボタンを押すとパネルを切り替えるwx 2.8(Python 2.7)の基本GUIがあります。 GUIを開くと最大化されます。しかし、何らかの理由で、Windows 7/10では、ウィンドウ全体が最小サイズにサイズ変更されますが、Ubuntu 14.04ではサイズ変更されません。誰かが私がここで間違っていることを教えてもらえますか?私はウィンドウのサイズを変更したくない、私はそれが最大化を維持したい。全体のコードは以下の通りです: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 –

関連する問題