【问题标题】:Create a load of button images from .jpg files从 .jpg 文件创建大量按钮图像
【发布时间】:2014-02-12 17:11:08
【问题描述】:

我有一个文件夹,其中包含许多 .jpg 文件(每个文件都是 100x100 像素)。

我想创建一个wxPython 面板,将所有这些.jpg(带有马赛克布局)显示为wx.BitmapButton

我尝试使用名为 BitmapButton.py 的 wxPython 演示,但这仅从嵌入图像加载图像,这里我不知道使用 JPEG 执行此操作的规范方法是什么。

此外,我希望此面板能够自动为按钮提供良好的布置。

示例:假设我有 10 个按钮。

  • 如果窗口的宽度足以容纳每行 5 个按钮,则应显示 2 行,每行 5 个按钮,
  • 如果窗口被调整为更小的宽度,那么应该显示 2 行 4 个按钮 + 1 行 2 个按钮,等等。

如何处理wx.BitmapButton中的JPEG,如果按钮很多,如何使它们在面板中自动具有良好的布局(行中自动对齐)?强>

【问题讨论】:

  • 我所有的 wxPython 经验告诉我,根据大小重新排列按钮将是一个巨大的痛苦
  • 感谢您的回答@wnnmaw。我的问题确实是:是否有一个 BoxSizer 小部件(或任何其他名称)可以处理面板中按钮的自动-排列?

标签: python button wxpython wxwidgets


【解决方案1】:

是的,在 wxPython 2.9+ 中有一个新的 sizer 可以做你想做的事情,叫做 WrapSizer。 wxPython 演示中有一个使用示例。您还可以在以下位置阅读它:

至于 BitmapButton,如果你操作得当,我很确定你可以将它传递给一个 jpg 文件。您可能需要执行以下操作:

img = wx.Image(filepath, wx.BITMAP_TYPE_ANY)
bmp = wx.BitmapFromImage(img)
b = wx.BitmapButton(self, -1, bmp, (20, 20),
                   (bmp.GetWidth()+10, bmp.GetHeight()+10))

【讨论】:

  • 太棒了!我没想到它这么简单......两个小事:向位图添加阴影的更简单方法是什么(比如这里的 ablum 艺术:static.pcinpact.com/images/bd/news/119801.jpeg)以及如何在图像下方添加文本 也是按钮的一部分(即可点击) ?
  • 我不知道阴影...您可能必须以某种方式将其添加到图像本身。或者,可以创建一个阴影图像并将其与位图组合,然后再将其应用于按钮。至于添加文本,BitmapButton 似乎不支持。不过,您也许可以让它与 GenBitmapButton 一起使用。
  • 谢谢@MikeDriscoll。当按钮不适合当前窗口时,最后一个按钮的大小会调整为更小(我不想要,我希望添加滚动条):pastebin.com/Jq5Sp296你对此有什么想法吗?
  • 此外,我注意到,在制作 10 BitmapButtons (size 150x150) + WrapSizer 时,当我调整窗口大小时会有很多闪烁。对此@MikeDriscoll 有什么想法吗?
  • 也许使用 ScrolledPanel 或 ScrolledWindow,尽管这可能会阻止您想要的包装。为了消除闪烁,我会查看面板的冻结/解冻方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2014-06-12
相关资源
最近更新 更多