填充帧wxpython
我正在wxpython中创建一个GUI,遇到了一个无法解决的问题。所有面板和标签都使用wx.ENABLED和1作为比例,但它仍然不会最大化窗口的面板。我想我至少应该能够水平伸展它们 框架:填充帧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
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将始终尽可能紧密地包装所有元素。我必须等待两天才能接受,但在我能够: