填充帧wxpython

填充帧wxpython,python,window,wxpython,panel,expand,Python,Window,Wxpython,Panel,Expand,我正在wxpython中创建一个GUI,遇到了一个无法解决的问题。所有面板和标签都使用wx.ENABLED和1作为比例,但它仍然不会最大化窗口的面板。我想我至少应该能够水平伸展它们 框架: import wx class MyFrame2 ( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString

我正在wxpython中创建一个GUI,遇到了一个无法解决的问题。所有面板和标签都使用wx.ENABLED和1作为比例,但它仍然不会最大化窗口的面板。我想我至少应该能够水平伸展它们

框架:

import wx

class MyFrame2 ( wx.Frame ):

    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )

        self.SetSizeHintsSz( wx.DefaultSize, wx.DefaultSize )

        winSizer = wx.FlexGridSizer( 1, 2, 0, 0 )
        winSizer.SetFlexibleDirection( wx.BOTH )
        winSizer.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

        self.leftPanel = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        gSizer6 = wx.GridSizer( 2, 1, 0, 0 )

        self.someInput = wx.TextCtrl( self.leftPanel, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer6.Add( self.someInput, 1, wx.ALL|wx.EXPAND, 5 )

        self.leftButton = wx.Button( self.leftPanel, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
        gSizer6.Add( self.leftButton, 1, wx.ALL|wx.EXPAND, 5 )


        self.leftPanel.SetSizer( gSizer6 )
        self.leftPanel.Layout()
        gSizer6.Fit( self.leftPanel )
        winSizer.Add( self.leftPanel, 1, wx.ALL|wx.EXPAND, 5 )

        self.rightPanel = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        fgSizer14 = wx.FlexGridSizer( 2, 1, 0, 0 )
        fgSizer14.SetFlexibleDirection( wx.BOTH )
        fgSizer14.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED )

        self.innerPanel = wx.Panel( self.rightPanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        gSizer8 = wx.GridSizer( 0, 2, 0, 0 )

        self.someText = wx.StaticText( self.innerPanel, wx.ID_ANY, u"Bla bla", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.someText.Wrap( -1 )
        gSizer8.Add( self.someText, 1, wx.ALL|wx.EXPAND, 5 )


        self.innerPanel.SetSizer( gSizer8 )
        self.innerPanel.Layout()
        gSizer8.Fit( self.innerPanel )
        fgSizer14.Add( self.innerPanel, 1, wx.EXPAND |wx.ALL, 5 )

        self.rightButton = wx.Button( self.rightPanel, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
        fgSizer14.Add( self.rightButton, 1, wx.ALL|wx.EXPAND, 5 )


        self.rightPanel.SetSizer( fgSizer14 )
        self.rightPanel.Layout()
        fgSizer14.Fit( self.rightPanel )
        winSizer.Add( self.rightPanel, 1, wx.ALL|wx.EXPAND, 5 )


        self.SetSizer( winSizer )
        self.Layout()

        self.Centre( wx.BOTH )

    def __del__( self ):
        pass
最大化打开窗口时:

以最小化方式打开窗口时:

当我最小化窗口而不使用最大化窗口时,为什么它会起作用?所有属性都被拉伸和展开。

我发现FlexGridSizer有两个属性,分别名为GrowtableRow和GrowtableCols。 这些属性获取一个索引列表,该列表指示哪些行和/或列应该能够展开,这就成功了


如果没有行/列被指定为可增长,FlexGridSizer将始终尽可能紧密地包装所有元素。

我必须等待两天才能接受,但在我能够: