wx.StaticBox 大小参数不受尊重

发布于 2024-11-28 09:31:33 字数 415 浏览 0 评论 0原文

我正在尝试创建一个具有恒定大小的 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 大小。如何使盒子符合硬编码尺寸?

I'm trying to create a wx.StaticBox having a constant size, regardless to the size of the widget within. So I have a panel containing the following code:

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)

However, the box simply wraps the StaticText widget within, instead of sticking to the specified 200x200 size. How do I make the box conform to a hard-coded size?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み青杉依旧 2024-12-05 09:31:33

如果您在创建 StaticBox 后添加以下内容,它将强制您调整大小:

box.SetMaxSize((200,200))

请注意,StaticText 框不会换行其文本,因此如果您的文本比StaticBox 它将延伸到框的边缘之外(至少在 OS X 上它会这样做,在 Windows 上的行为可能有所不同)。

更新:

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

尽管我同意 bogdan 的观点,即使用 SetMinSizeSetMaxSize 显式设置窗口大小可能不是一个好主意(例如,如果系统字体大小发生变化并且内容不再适合(您设置的大小限制),StaticText 控件会缩小到其内容的大小,并且看起来会拉动所有内容,除非您明确地对其容器施加大小限制。

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

If you add the following after creating your StaticBox it will force the size for you:

box.SetMaxSize((200,200))

Note that a StaticText box does not wrap its text, so if your text is wider than the StaticBox it will extend beyond the edge of the box (as least on OS X it does this, may behave differently on Windows).

Update:

On Windows the sizing behaves much differently - the StaticBox just shrinks around the text.

Although I agree with bogdan that explicitly setting a window size with SetMinSize or SetMaxSize is probably not a good idea (e.g. if system font size changes and the contents no longer fits nicely into the size constraints you've set), the StaticText control shrinks to the size of its contents and appears to pull everything with it unless you explicitly force size limits on its container.

I suspect your only option here is either to use SetMaxSize or SetMinSize on your box control, or try other control options other than a StaticText. You could try the HtmlWindow as an alternative.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文