wx.StaticBox大小参数不受尊重

时间:2011-08-08 04:16:17

标签: python wxpython

我正在尝试创建一个具有常量大小的wx.StaticBox,无论其中的小部件大小如何。所以我有一个包含以下代码的面板:

box = wx.StaticBox(self, -1, 'BoxTitle', size=(200, 200))
bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)

text = wx.StaticText(self, -1, 'Text')
bsizer.Add(text)

border = wx.BoxSizer()
border.Add(bsizer)
self.SetSizer(border)

但是,该框只是将StaticText小部件包装在内,而不是坚持指定的200x200大小。如何使盒子符合硬编码尺寸?

1 个答案:

答案 0 :(得分:1)

如果您在创建StaticBox后添加以下内容,则会强制缩小尺寸:

box.SetMaxSize((200,200))

请注意,StaticText框不会包装其文本,因此如果您的文字宽于StaticBox,它将超出框的边缘(至少在OS X上,它会执行此操作,可能在Windows上表现不同。)

<强>更新

在Windows上,大小调整的行为有很大不同 - StaticBox只会缩小文本周围。

虽然我同意bogdan明确设置窗口大小SetMinSizeSetMaxSize可能不是一个好主意(例如,如果系统字体大小发生变化且内容不再适合大小限制你已设置),StaticText控件缩小到其内容的大小,并显示用它拉取所有内容,除非你明确强制其容器的大小限制。

我怀疑你唯一的选择是在你的盒子控件上使用SetMaxSizeSetMinSize,或尝试除StaticText以外的其他控制选项。您可以尝试HtmlWindow作为替代方案。

相关问题