如何在wx.StaticBox周围添加边框/内边距?
我在一个 wx.Panel 里面放了一个 wx.StaticBox。这个静态框几乎占满了面板的所有空间,而且没有边框。我该怎么给这个静态框加个边框呢?
下面是一些示例代码:
self.aPanel = wx.Panel( self, wx.ID_ANY, style = wx.RAISED_BORDER )
self.aLabel = wx.StaticText( self.aPanel, -1, 'Bar' )
self.aSizer = wx.BoxSizer( wx.HORIZONTAL )
self.aSizer.Add( self.aLabel, 0, wx.ALIGN_CENTER | wx.ALL )
self.aBox = wx.StaticBox( self.aPanel, wx.ID_ANY, 'Foo' )
self.aBoxSizer = wx.StaticBoxSizer( self.aBox, wx.VERTICAL )
self.aBoxSizer.Add( self.aSizer, 0, wx.ALIGN_LEFT | wx.ALL )
self.aPanel.SetSizer( self.aBoxSizer )
1 个回答
2
我想这可能是因为你在使用 wx.StaticBoxSizer。如果我把它换成 wx.BoxSizer,边框参数就能正常工作了。这里有一个简单的例子。我不知道你想要的具体布局是什么,所以这个例子可能不完全符合你的需求,但我希望它能作为一个起点帮助你。
(编辑:根据评论修改了代码)
import wx
class myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, title='Test', size=(200,200))
self.aPanel = wx.Panel(self, style = wx.RAISED_BORDER )
self.aLabel = wx.StaticText( self.aPanel, -1, 'Bar' )
self.aBox = wx.StaticBox(self.aPanel, -1, 'Foo')
self.aSizer = wx.BoxSizer( wx.HORIZONTAL )
self.aSizer.Add( self.aLabel, 0, wx.ALIGN_CENTER | wx.ALL )
self.aBoxSizer = wx.StaticBoxSizer( self.aBox, wx.VERTICAL )
self.aBoxSizer.Add( self.aSizer, 0, wx.ALIGN_LEFT | wx.ALL )
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(self.aBoxSizer, 1, wx.EXPAND | wx.ALL, 20)
self.aPanel.SetSizer( vbox )
self.Show()
if __name__ == '__main__':
app = wx.PySimpleApp(0)
frame = myframe()
app.MainLoop()