【问题标题】:wxPython Add multiple images to a panel issuewxPython 将多个图像添加到面板问题
【发布时间】:2018-10-23 13:39:41
【问题描述】:

我正在尝试以单独的方法将位图添加到 GridSizer 中:

def populate_grid_with_emojis(self, category):
    for i in range(len(self.emoji_categories[category])):
        emoji_string = self.emoji_categories[category][i].lower()
        if '_skin_tone' in UNICODE_EMOJI[STRING_UNICODE[emoji_string]]:
            continue
        init_emoji = wx.Image(unicode_to_filename(STRING_UNICODE[emoji_string], 32))
        emoji = EmojiBitmap(wx.Bitmap(init_emoji),
                            UNICODE_EMOJI[STRING_UNICODE[emoji_string]])

        static_bmp = wx.StaticBitmap()
        static_bmp.Create(self, -1, wx.Bitmap(init_emoji))

        self.emoji_bmps_sizer.Add(static_bmp)
        self.added_emojis[UNICODE_EMOJI[STRING_UNICODE[emoji_string]]] = emoji

我的问题是,在将 StaticBitmap 添加到 sizer 时,它会创建加载效果,并在父窗口中一个接一个地快速显示图像。之后,它们被加载到 sizer 中。

有没有办法简单地将多个图像添加到面板,但避免使用静态位图?这种加载效果会在执行过程中造成很大的延迟,因此不能选择静态 bmp。

我也看过 wx.grid.Grid,但这似乎使事情更加复杂。

谢谢!

【问题讨论】:

    标签: wxpython


    【解决方案1】:

    我们在这里讨论了多少张图片?保存这些图像的文件有多大?如果您有很多大图像,那么您几乎无能为力,因为系统需要时间来加载位图并将它们排列在网格中。

    你看过 wx.lib.agw 中的 ThumbnailCtrl 吗?它可能会为您提供一些关于如何加快图像加载和显示速度的指导。

    最后,如果您有很多(非常多)图像,请不要使用 wx.StaticBitmap:尤其是在 Windows 上,操作系统很容易用完 GDI 对象并导致系统崩溃。

    安德烈亚。

    【讨论】:

    • 谢谢!我会看看你的建议。每个缩略图大约 4KB,我在面板中加载了大约 1.5k 图像。不幸的是,实际上不可能避免 StaticBitmap,因为这是 sizer.Add() 支持的唯一图像对象。无论如何,我已经设法将延迟解决到理想的程度,在所有内容加载之前不显示面板。
    • 如何导入 wx.agw.thumbnailctrl?默认情况下 wx 似乎没有模块
    • 嗨,您没有正确阅读我的答案:我写的是 wx.lib.agw.thumbnailctrl,而不是 wx.agw.thumbnailctrl。此外,您并不需要 StaticBitmap 和 sizer:您可以使用 thumbnailctrl 或在 wx.EVT_PAINT 事件中自己绘制图像。 1,500 个静态位图将使许多系统陷入几乎无法使用的水平。
    • 嗨,我的错,我的意思是 wx.lib.agw.thumbnailctrl。 wx安装后默认没有添加模块,所以无法导入。你能告诉我如何让模块工作吗?感谢您的所有回答!
    • 你使用的是什么版本的 wxPython? Thumbnailctrl 是多年前添加的,然后移至 wxPython 内部的 AGW 库。尽管如此,它还是在 5 年前以 wxPython 的方式发布的。你能运行这里包含的小脚本吗:wxpython.org/Phoenix/docs/html/wx.lib.agw.thumbnailctrl.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多