我想要这样的布局
框架内有一个主面板,左边和右边有空白填充物,中间的另一个子面板。一个静态文本元素,位于子面板的顶部,在更改窗口大小时它应该正确换行。在
我的代码片段如下所示
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
super(MyPanel, self).__init__(parent)
self.hsizer = wx.BoxSizer()
self.hsizer.AddStretchSpacer()
self.panel = wx.Panel(self)
self.panel.SetSize((350, -1))
self.vsizer = wx.BoxSizer(wx.VERTICAL)
label = (
"This is a long scentence that I want it wrapped properly, "
"but it doesn't seem to work at work. "
"I prefer if you guys can give any sugeestions or help. "
"For Long Long Long Long Long scentence."
)
style = wx.ALIGN_LEFT
self.static_text = wx.StaticText(self, label=label, style=style)
self.vsizer.Add(self.static_text, flag=wx.EXPAND | wx.ALL | wx.ALIGN_CENTER, border=5)
self.static_text.Wrap(self.panel.Size[0])
self.static_text.SetAutoLayout(True)
self.panel.SetSizer(self.vsizer)
self.hsizer.Add(self.panel, flag=wx.ALIGN_CENTER)
self.hsizer.AddStretchSpacer()
self.SetSizer(self.hsizer)
self.Layout()
print self.Size
print self.panel.Size
if __name__ == '__main__':
app = wx.App()
frame = wx.Frame(None)
sizer = wx.BoxSizer()
sizer.Add(MyPanel(frame), flag=wx.EXPAND)
frame.SetSizer(sizer)
frame.Show()
app.MainLoop()
目前,在改变窗口大小时,不仅子面板不在中间,而且静态文本中的文本也不能正常换行。有什么建议可以让它发挥作用吗?在
在尝试使用sizer实现布局时,设置一些背景颜色通常很有帮助,这样就可以很容易地看到边界的位置,以及它们在调整大小时的行为。另一个有用的工具是Widget Inspection Tool。例如:
运行之后,我们可以看到,内容与布局草图不匹配,文本等内容在调整框架大小时不会改变大小或位置,MyPanel(粉色面板)也不会调整大小以填充框架。另外,从代码中可以看出,您希望文本成为绿色面板的子级(自面板)但从运行时的颜色来看,显然不是这样。再看一遍代码,我们会发现它是以self作为父级而不是自面板. 在
因此,在对这些问题进行更多调整之后,我们最终得到了以下代码:
^{pr2}$如果你需要的话,当你想把尺寸缩小的话,你可以再打电话给350号。在
相关问题 更多 >
编程相关推荐