wxPython将多个图像添加到面板问题

时间:2018-10-23 13:39:42

标签: wxpython

我正在尝试通过单独的方法将位图添加到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,但这似乎使事情变得更加复杂。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

您是否看过wx.lib.agw中的ThumbnailCtrl?它可能会为您提供有关如何加快图像加载和显示速度的提示。

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

安德里亚。